{% 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 %}