如何在jinja模板的for循环中增加一个variables?

我想做一些事情:

variablesp来自test.py这是一个列表['a','b','c','d']

{% for i in p %} {{variable++}} {{variable}} 

结果输出是:1 2 3 4

你可以使用set来增加一个计数器:

 {% set count = 1 %} {% for i in p %} {{ count }} {% set count = count + 1 %} {% endfor %} 

或者你可以使用loop.index

 {% for i in p %} {{ loop.index }} {% endfor %} 

检查模板devise器文档 。

正如Jeroen所说,存在一些范围问题:如果在循环之外设置“count”,则不能在循环内修改它。

您可以通过使用一个对象而不是“count”的标量来打败这种行为:

 {% set count = [1] %} 

你现在可以在一个forloop或者%include%中操作count。 下面是我如何增加计数(是的,这是非常糟糕的,但哦):

 {% if count.append(count.pop() + 1) %}{% endif %} {# increment count by 1 #} 

这是我的解决scheme:

把所有的计数器放在字典中:

 {% set counter = { 'something1': 0, 'something2': 0, 'etc': 0, } %} 

定义一个macros来轻松地增加它们:

 {% macro increment(dct, key, inc=1)%} {% if dct.update({key: dct[key] + inc}) %} {% endif %} {% endmacro %} 

现在,只要你想增加'something1'计数器,只要:

 {{ increment(counter, 'something1') }} 

来searchDjango的方式做到这一点,发现这个职位。 也许别人需要django解决scheme谁来这里。

 {% for item in item_list %} {{ forloop.counter }} {# starting index 1 #} {{ forloop.counter0 }} {# starting index 0 #} {# do your stuff #} {% endfor %} 

请阅读更多信息: https : //docs.djangoproject.com/en/1.11/ref/templates/builtins/