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)!
但是,它非常丑陋!还有另一个更优雅的解决方案吗?
问题答案:
也尝试基于字典的方法。似乎不太丑。
{% set vars = {'foo': False} %}
{% for item in items %}
{% if vars.update({'foo': True}) %} {% endif %}
{% if vars.foo %} Ok(1)! {% endif %}
{% endfor %}
{% if vars.foo %} Ok(2)! {% endif %}
这也会呈现:
Ok(1)!
Ok(2)!