Откажитесь и используйте Система шаблонов Jinja2
Я отказался от языка шаблонов django, он очень ограничен в том, что вы можете с ним делать.
Jinja2 использует тот же синтаксис, что и шаблон django, но добавляет к нему множество улучшений.
РЕДАКТИРОВАТЬ / ПРИМЕЧАНИЕ (Я знаю, это звучит как большой переход для незначительной проблемы, но на самом деле, держу пари, вы всегда будете сражаться со стандартной системой шаблонов в django, так что это действительно стоит Я верю, что это сделает вас более продуктивным в долгосрочной перспективе.)
Вы можете прочитать эту статью, написанную ее автором , хотя она техническая, он упоминает о проблеме с тегом {% cycle%} в django.
У Jinja нет тега цикла, у него есть метод цикла в цикле:
{% for user in users %}
<li class="{{ loop.cycle('odd', 'even') }}">{{ user }}</li>
{% endfor %}
Основным преимуществом Jinja2 является то, что он позволяет использовать логику для презентации, поэтому, если у вас есть список картинок, вы можете поместить их в таблицу, потому что вы можете начинать новую строку внутри таблицы через каждые N элементов. Смотрите, вы можете сделать, например:
{% if loop.index is divisibleby(5) %}
</tr>
{% if not loop.last %}
<tr>
{% endif %}
{% endif %}
Вы также можете использовать математические выражения:
{% if x > 10 %}
и вы можете получить прямой доступ к своим функциям python (но для определения функций, которые должны быть представлены для шаблона, требуется некоторая настройка)
{% for item in normal_python_function_that_returns_a_query_or_a_list() %}
четные переменные.
{% set variable_name = function_that_returns_an_object_or_something() %}