在Python Jinja模板中的for循环内部应用if语句



我得到了这个简单的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 %}

最新更新