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

我想做一些事情:

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

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

结果输出是:1 2 3 4

4 Solutions collect form web for “如何在jinja模板的for循环中增加一个variables?”

你可以使用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/

  • NameError:名称'reduce'在Python中没有定义
  • 如何用Pythondynamic构buildJSON对象?
  • 从python调用MATLAB函数
  • 在python3中的StringIO
  • Numpy“聪明”的对称matrix
  • Windows上的TensorFlow版本1.0.0-rc2:“OpKernel('op:”BestSplits“device_type:”CPU“')for unknown op:BestSplits”with test code
  • 有没有真正的替代Python文档的reStructuredText?
  • 非常长如果在Python语句
  • 如何将数据框中的pandas索引转换为列?
  • Pythonstring打印为
  • 强制为Unicode:需要string或缓冲区,在django admin中进行渲染时findNoneType