{% for %}

Теги {% for %} и {% endfor %} используются для перебирания значений в коллекции. При этом коллекция может быть как массивами, так и объектом.

<ul>
    {% for user in users %}
        <li>{{ user.username }}</li>
    {% endfor %}
</ul>

Вы также можете получить ключи и значения:

<ul>
    {% for key, user in users %}
        <li>{{ key }}: {{ user.username }}</li>
    {% endfor %}
</ul>

Вы можете использовать else, чтобы отобразить произвольный код, когда в коллекции нет значений:

<ul>
    {% for user in users %}
        <li>{{ user.username }}</li>
    {% else %}
        <li><em>There are no users found</em></li>
    {% endfor %}
</ul>

Итерация

Если Вам нужно пройтись по всей коллекции с определенным количеством значений, то Вы можете использовать ..:

{% for i in 0..10 %}
    - {{ i }}
{% endfor %}

Тогда на страница отобразятся числа от 0 до 10.

Вы также можете использовать буквы вместо цифр:

{% for letter in 'a'..'z' %}
    - {{ letter }}
{% endfor %}

{% for letter in 'a'|upper..'z'|upper %}
    - {{ letter }}
{% endfor %}

Условия

К сожалению, Вы не можете использовать break или continue в циклах. Однако Вы можете сначала отфильтровать коллекцию. Пример:

<ul>
    {% for user in users if user.active %}
        <li>{{ user.username }}</li>
    {% endfor %}
</ul>

Переменная loop

Внутри цикла Вы можете использовать следующие переменные:

Переменная Описание
loop.index Номер текущий итерации. (начинается с 1)
loop.index0 Номер текущий итерации. (начинается с 0)
loop.revindex Номер текущий итерации с конца (начинается с 1)
loop.revindex0 Номер текущий итерации с конца (начинается с 0)
loop.first Возвращает true, если первая итерация
loop.last Возвращает true, если последняя итерация
loop.length Количество элементов в коллекции
loop.parent Родительский контекст
{% for user in users %}
    {{ loop.index }} - {{ user.username }}
{% endfor %}