Рефакторинг 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/

Другие вопросы по тегам