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

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


Comments

comments powered by Disqus