Сообщить об ошибке.

Оператор ветвления if/elif/else в шаблонах jinja2

Оператор if/elif/else в шаблонах Jinja2 сравним с оператором if/else в Python. В простейшей форме, можно использовать его, чтобы проверить, определена ли переменная, не пуста ли она или не ложна:

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

Для нескольких веток можно использовать {% elif ... %} и {% else %}, как в Python. Также можно использовать более сложные выражения:

{% if kenny.sick %}
    Kenny is sick.
{% elif kenny.dead %}
    You killed Kenny!  You bastard!!!
{% else %}
    Kenny looks okay --- so far
{% endif %}

В шаблонах Jinja2 доступно встроенные выражения {% ... if ... else ... %}, что полезно в некоторых ситуациях. Например, выражения if/else можно использовать для расширения шаблона из другого шаблона, если переменная определена, в противном случае из шаблона макета по умолчанию:

{% extends layout_template if layout_template is defined else 'master.html' %}

Общий синтаксис: <сделать что-то>, if <что-то истинно>, else <сделать что-то еще>.

Часть выражения else в шаблоне необязательна. Если не предусмотрено другое поведение, то по умолчанию блок else неявно вычисляется в неопределенный объект Undefined:

{{ "[{}]".format(page.title) if page.title }}

Так же оператор шаблона if можно использовать в циклах шаблонов, для фильтрации последовательности в момент итерации, что позволяет пропускать ненужные элементы. В следующем примере пропускаются все скрытые пользователи:

{% for user in users if not user.hidden %}
    <li>{{ user.username|e }}</li>
{% endfor %}