{% set cnt = 0 %}
{% for room in rooms %}
{% for bed in room %}
{% set cnt = cnt + 1 %}
{% endfor %}
{{ cnt }}
{% endfor %}
假设我们有一个嵌套循环,打印的 cnt 总是 0,因为这是我们进入第一个 for 循环时定义的。当我们在内循环中增加计数器时,它似乎只是内循环的一个局部变量——所以它会在循环内部增加,但是那个本地 cnt 消失了。我们如何修改全局cnt???
尽管 Jinja2 文档可能很棒,但他们不清楚设置变量范围。唯一提到的作用域是内部块的“作用域”修饰符,但我想它不能应用于所有事情......疯狂。
最佳答案
作用域规则阻止您从循环内部访问在循环外部声明的变量
报价 Peter Hollingsworth来自 his previous answer ,
您可以通过使用对象而不是“cnt”的标量来克服这种行为:
{% set cnt = [0] %}
{% for room in rooms %}
{% for bed in room %}
{% if cnt.append(cnt.pop() + 1) %}{% endif %}
{% endfor %}
{{ cnt[0] }}
{% endfor %}
total times through = {{ cnt[0] }}
关于flask - Jinja2 嵌套循环计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18755046/