Модуль% в шаблоне Django

Я ищу способ использовать что-то вроде оператора модуля в django. Я пытаюсь добавить класс в каждый четвертый элемент цикла.

С модулем это будет выглядеть так:

  • Что делает это «-» в движке шаблонов jinja2?
  • Техника Python или простая система шаблонов для вывода текстового текста
  • Проблемы с Jinja2: TemplateNotFound: index.html
  • Как использовать dicts в шаблонах Мако?
  • jinja2: макрос выбора макроса или динамических вызовов макроса
  • Рендеринг объектов JSON с использованием шаблона Django после вызова Ajax
  • {% 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 %} 

    Конечно, это не работает, потому что% является зарезервированным персонажем. Есть ли другой способ сделать это?

  • иметь URL-адрес, который принимает все символы
  • Пользовательское поле id в модели Django
  • Django: Когда настраивать save vs с помощью сигнала после сохранения
  • Как проверить флаг TEMPLATE_DEBUG в шаблоне django?
  • Ошибка проверки целостности Django IntegerRangeField
  • Django admin, пользовательское сообщение об ошибке?
  • 3 Solutions collect form web for “Модуль% в шаблоне Django”

    Вам нужен divisibleby , встроенный фильтр django.

     {% for p in posts %} <div class="post width1 height2 column {% if forloop.counter0|divisibleby:4 %}first{% endif %}"> <div class="preview"> </div> <div class="overlay"> </div> <h2>p.title</h2> </div> {% endfor %} 

    Вы не можете использовать оператор модуля в тегах шаблонов Django, но было бы достаточно просто написать фильтр для этого. Что-то вроде этого должно работать:

     @register.filter def modulo(num, val): return num % val 

    А потом:

     {% ifequal forloop.counter0|modulo:4 0 %} 

    Вы могли бы даже сделать что-то вроде этого, вместо этого:

     @register.filter def modulo(num, val): return num % val == 0 

    А потом:

     {% if forloop.counter0|modulo:4 %} 

    Или вы можете использовать тег cycle :

     <div class="post width1 height2 column {% cycle 'first' '' '' '' %}"> 

    Похоже, вы должны просто использовать тег цикла. Встроенные шаблонные теги

    Python - лучший язык программирования в мире.