Ответ 1
Вы не должны использовать синтаксис с двумя скобками {{ }}
в операторах if
или ifequal
, вы можете просто получить доступ к переменной там, как в обычном питоне:
{% if title == source %}
...
{% endif %}
У меня есть следующий словарь, переданный функции рендеринга, причем источником является список строк и заголовка, являющийся строкой, потенциально равной одной из строк в источниках:
{'title':title, 'sources':sources})
В HTML-шаблоне я хотел бы сделать что-то из следующих строк:
{% for source in sources %}
<tr>
<td>{{ source }}</td>
<td>
{% if title == {{ source }} %}
Just now!
{% endif %}
</td>
</tr>
{% endfor %}
Однако следующий блок текста приводит к ошибке:
TemplateSyntaxError at /admin/start/
Could not parse the remainder: '{{' from '{{'
... с {% if title == {{ source }} %}
выделяется красным цветом.
Вы не должны использовать синтаксис с двумя скобками {{ }}
в операторах if
или ifequal
, вы можете просто получить доступ к переменной там, как в обычном питоне:
{% if title == source %}
...
{% endif %}
{% for source in sources %}
<tr>
<td>{{ source }}</td>
<td>
{% ifequal title source %}
Just now!
{% endifequal %}
</td>
</tr>
{% endfor %}
or
{% for source in sources %}
<tr>
<td>{{ source }}</td>
<td>
{% if title == source %}
Just now!
{% endif %}
</td>
</tr>
{% endfor %}
Вы попробуйте.
Я уже пробовал это в своем шаблоне django.
Все будет хорошо. Просто удалите пару фигурных фигур {{ и }} из {{source}}.
Я также добавил тег <table> и , что он.
После модификации ваш код будет выглядеть примерно так.
{% for source in sources %}
<table>
<tr>
<td>{{ source }}</td>
<td>
{% if title == source %}
Just now!
{% endif %}
</td>
</tr>
</table>
{% endfor %}
Мой словарь выглядит ниже,
{'title':"Rishikesh", 'sources':["Hemkesh", "Malinikesh", "Rishikesh", "Sandeep", "Darshan", "Veeru", "Shwetabh"]}
и OUTPUT выглядели ниже, как только мой шаблон получил рендеринг.
Hemkesh
Malinikesh
Rishikesh Just now!
Sandeep
Darshan
Veeru
Shwetabh