我得到了这个简单的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。
有什么建议吗?
由于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 %}