【发布时间】:2013-09-12 03:52:16
【问题描述】:
{% set cnt = 0 %}
{% for room in rooms %}
{% for bed in room %}
{% set cnt = cnt + 1 %}
{% endfor %}
{{ cnt }}
{% endfor %}
假设我们有嵌套循环,打印的 cnt 将始终为 0,因为这是在我们进入第一个 for 循环时定义的。当我们在内部循环中递增计数器时,它似乎只是内部循环的局部变量——所以它会在循环内部递增,但随后本地 cnt 消失了。我们如何修改全局cnt???
尽管 Jinja2 文档可能很棒,但他们不清楚设置变量范围。唯一提到作用域的是内部块的“作用域”修饰符,但我想它不能应用于所有东西......疯了。
【问题讨论】:
-
我搜索了一段时间,发现很多类似的问题但没有答案。我的解决方案是使用一个 do 块和一个自定义类,该类具有一个增加变量的方法,因为 Jinja 不允许在 do 块中使用赋值语句。所以像 {% do cnt.increment() %} 在 for 循环中。