Я ищу способ использовать что-то вроде оператора модуля в django. Я пытаюсь добавить имя класса к каждому четвертому элементу цикла.
По модулю это будет выглядеть так:
{% for p in posts %}
<div class="post width1 height2 column {% if forloop.counter0 % 4 == 0 %}first{% endif %}}">
<div class="preview">
</div>
<div class="overlay">
</div>
<h2>p.title</h2>
</div>
{% endfor %}
Конечно, это не работает, потому что% - зарезервированный символ. Есть ли другой способ сделать это?
templatetag
тег, но он охватывает{%
,%}
и т. Д. (Не%
).Ответы:
Вам нужен divisibleby , встроенный фильтр django.
источник
Вы не можете использовать оператор модуля в тегах шаблонов Django, но было бы достаточно просто написать фильтр для этого. Примерно так должно работать:
А потом:
Вместо этого вы можете сделать что-то вроде этого:
А потом:
Или вы можете использовать
cycle
тег:источник
Похоже, вам просто нужно использовать тег цикла. Встроенные теги шаблона
источник
Пример строк и столбцов начальной загрузки. Новый ряд каждые 4 шт. Также закройте последнюю строку, даже если элементов меньше 4.
MyApp / templatetags / my_tags.py
html шаблон
источник