(追記) (追記ここまで)
Feb 28, 2013

Объявление флага в цикле Jinja2

Понадобилось мне тут создать флаг в цикле, который можно использовать где нибудь потом в шаблоне. По логике все должно выглядеть примерно так:

{% set exists = 0 %}
{% for i in range(5) %}
{% if True %}
{% set exists = 1 %}
{% endif %}
{% endfor %}
{% if exists %}
 <!-- exists is true -->
{% endif %}

Но такой код не фурычит! exist всегда будет 0. Это особенность области видимости переменных в Jinja при присваивании.

Поэтому есть небольшой хак как это поправить:

{% set exists = [] %}
{% for i in range(5) %}
{% if True %}
{% do exists.append(1) %}
{% endif %}
{% endfor %}
{% if exists %}
 <!-- exists is true -->
{% endif %}

Решение взято от сюда.

AltStyle によって変換されたページ (->オリジナル) /