Feb 28, 2013
|
Понадобилось мне тут создать флаг в цикле, который можно использовать где нибудь потом в шаблоне. По логике все должно выглядеть примерно так:
{% 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 %}
Решение взято от сюда.