Я хочу изменить значение переменной, объявленной вне цикла в цикле. Но всегда меняя, он сохраняет начальное значение вне цикла.Jinja2: измените значение переменной внутри цикла
{% set foo = False %}
{% for item in items %}
{% set foo = True %}
{% if foo %} Ok(1)! {% endif %}
{% endfor %}
{% if foo %} Ok(2)! {% endif %}
Это делает:
Ok(1)!
Так что единственное (плохо) решение было найдено до сих пор было так:
{% set foo = [] %}
{% for item in items %}
{% if foo.append(True) %} {% endif %}
{% if foo %} Ok(1)! {% endif %}
{% endfor %}
{% if foo %} Ok(2)! {% endif %}
Это делает:
Ok(1)!
Ok(2)!
Но, это очень уродливо! Есть ли еще более элегантное решение?
Я не думаю, что есть какой-нибудь другой способ. Возможно, вы можете перестроить код, чтобы вам не нужно было устанавливать переменную. –
+1 на вопрос, как он стал отвечать за меня :) –
@Shankar Cabus: отличный вопрос. Это, вероятно, должно быть классифицировано под 'Jinja Annoyances' – dreftymac