我有这个简单的HTML模板:
{% block html_page %}
{% set counter = 1 %}
{% for field in fields %}
COUNTER: {{ counter }} <br>
{% set counter = counter+1 %}
{% endfor %}
{% endblock %}
fields
包含4个项目。
输出为:
COUNTER: 1
COUNTER: 1
COUNTER: 1
COUNTER: 1
当我想要的输出应该与计数器增加时一样:
COUNTER: 1
COUNTER: 2
COUNTER: 3
COUNTER: 4
在for循环内正在完成计数器分配,所以我不明白为什么它会继续返回1。
有什么建议吗?
答案 0 :(得分:2)
由于Jinja中的作用域规则,此方法不起作用。
在Jinja 2.10之后,要解决范围问题,您可以执行以下操作:
{% set count = namespace(a=0) %}
{% for field in fields %}
{{ count.a }}
{% set count.a = count.a + 1 %}
{% endfor %}
或者您可以使用loop.index:
{% for field in fields %}
{{ loop.index }}
{% endfor %}