如何在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/