在Python Jinja Tempaltes中的for循环内应用if语句

时间:2018-12-03 09:26:21

标签: python html if-statement flask jinja2

我有这个简单的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。

有什么建议吗?

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 %}