Джанго: проблема с {% cycle%}
-
07-07-2019 - |
Вопрос
Это взято прямо из моего шаблона Django:
{% for day in days %}
<!-- {% cycle 'day' 'day' 'day last' as cls %} -->
{% rounded "black" cls %} {# Custom tag giving me rounded borders. #}
...
{% endrounded %}
{% endfor %}
Я закомментировал {% cycle%}
, потому что я использую его только для установки " cls
" на последний день
" каждая третья итерация в цикле. Есть ли лучший способ сделать это без добавления какого-либо кода в представление? (Люди говорят, что логика должна быть вне шаблонов, но наоборот - чуть хуже.)
Решение
Я не уверен, что понимаю, почему у вас возникла проблема, поскольку ваше текущее решение, похоже, работает. Я не думаю, что вам нужны комментарии HTML, так как {% cycle%}
с as
ничего не выводит, но, кроме того, это выглядит нормально.
Однако, если вам нужен другой способ сделать это, вы можете использовать фильтр divisibleby
:
{% for day in days %}
{% if forloop.counter|divisibleby:3 %}
{% rounded "black" "day last" %}
{% else %}
{% rounded "black" "day" %}
{% endif %}
{% endfor %}
но я не думаю, что это лучше, чем у вас уже есть.
Другие советы
'Новое в Django Development version'
Цикл «as» теперь имеет режим «без звука»:
http://docs.djangoproject.com/en/dev / исх / шаблоны / встроенные функции / # цикл
Логика приложения не должна быть в ваших шаблонах. Логика представления действительно принадлежит там (что и выглядит). Я бы положил это туда. Р>
Ммм ... для этого и есть тег cycle
. Я понятия не имею, почему вы пытаетесь избежать этого, но вы должны знать:
Так что если вы не будете использовать логику представления, вы застряли с тегами шаблона. Либо вы пишете свой собственный, либо используете встроенный. цикл
кажется таким же простым, как и любой другой. В чем проблема.