Рефакторинг Django для шаблона forloop
Я чувствую, что должен быть более чистый способ сделать что-то подобное. У меня есть 15 или около того объектов, которые перечислены с тремя на ряд. Кто-нибудь знает лучшие решения.
<ul>
{% for object in object_list %}
<li
{% ifequal forloop.counter 1 %}class="first"{% endifequal %}
{% ifequal forloop.counter 4 %}class="first"{% endifequal %}
{% ifequal forloop.counter 7 %}class="first"{% endifequal %}
{% ifequal forloop.counter 10 %}class="first"{% endifequal %}
{% ifequal forloop.counter 13 %}class="first"{% endifequal %}
>
{{ object.title }}
</li>
{% ifequal forloop.counter 3 %}<div class="clear"></div>{% endifequal %}
{% ifequal forloop.counter 6 %}<div class="clear"></div>{% endifequal %}
{% ifequal forloop.counter 9 %}<div class="clear"></div>{% endifequal %}
{% ifequal forloop.counter 12 %}<div class="clear"></div>{% endifequal %}
{% ifequal forloop.counter 15 %}<div class="clear"></div>{% endifequal %}
{% endfor %}
</ul>
Для второго цикла вы можете сделать
{% if forloop.counter|divisibleby:"3" %}<div class="clear"></div>{% endif %}
Но 1,4,7,10,13 не имеют общего знаменателя.
Любая помощь приветствуется.
2 ответа
Вы ищете forloop.counter0.
{% if forloop.counter0|divisibleby:"3" %}<div class="clear"></div>{% endif %}
Вы можете использовать нарезку, чтобы разбить их на группы по 3 ряда, а затем выполнить соответствующую операцию на каждом срезе по 3 единицы.
http://docs.djangoproject.com/en/dev/ref/templates/builtins/