flask - Jinja2 嵌套循环计数器

标签 flask jinja2

{% 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/

相关文章:

python - 如何获取 Flask 请求 JSON 数据作为字典?

python - 我如何为我的员工组织健康检查(带有 python 代码的 Docker)?

yaml - 改进的 SaltStack 缩放方式

python - 从 Jinja 呈现的模板中删除不必要的空格

flask - Jinja2-字符串变量,在类名中空格无法正确读取

python - 在模板中访问 jinja2 全局变量

python - Flask - SQLAlchemy - 清除表以及多对多链接表

javascript - 如何 : Dynamically generate CSRF-Token in WTForms with Flask

javascript - 从 Flask 服务我无法加载 javascript 文件