我希望能够将当前循环迭代输出到我的模板。
根据文档:http://wsgiarea.pocoo.org/jinja/docs/loops.html,我正在尝试使用loop.counter变量。
我有以下内容:
<ul>
{% for user in userlist %}
<li>
{{ user }} {{loop.counter}}
</li>
{% if loop.counter == 1 %}
This is the First user
{% endif %}
{% endfor %}
</ul>
虽然我的模板没有输出任何内容。什么是正确的语法?
答案 0 :(得分:275)
循环中的计数器变量在jinja2中称为 loop.index 。
>>> from jinja2 import Template
>>> s = "{% for element in elements %}{{loop.index}} {% endfor %}"
>>> Template(s).render(elements=["a", "b", "c", "d"])
1 2 3 4
答案 1 :(得分:22)
在for循环块中,您可以访问一些特殊变量,包括loop.index
- 但不能loop.counter
。来自the official docs:
Variable Description
loop.index The current iteration of the loop. (1 indexed)
loop.index0 The current iteration of the loop. (0 indexed)
loop.revindex The number of iterations from the end of the loop (1 indexed)
loop.revindex0 The number of iterations from the end of the loop (0 indexed)
loop.first True if first iteration.
loop.last True if last iteration.
loop.length The number of items in the sequence.
loop.cycle A helper function to cycle between a list of sequences. See the explanation below.
loop.depth Indicates how deep in a recursive loop the rendering currently is. Starts at level 1
loop.depth0 Indicates how deep in a recursive loop the rendering currently is. Starts at level 0
loop.previtem The item from the previous iteration of the loop. Undefined during the first iteration.
loop.nextitem The item from the following iteration of the loop. Undefined during the last iteration.
loop.changed(*val) True if previously called with a different value (or not called at all).
答案 2 :(得分:2)
如果您使用的是Django,请使用forloop.counter
代替loop.counter
<ul>
{% for user in userlist %}
<li>
{{ user }} {{forloop.counter}}
</li>
{% if forloop.counter == 1 %}
This is the First user
{% endif %}
{% endfor %}
</ul>
答案 3 :(得分:0)
在python中:
env = Environment(loader=FileSystemLoader("templates"))
env.globals["enumerate"] = enumerate
在模板中:
{% for k,v in enumerate(list) %}
{% endfor %}
答案 4 :(得分:0)
将此{% if loop.counter == 1 %}
更改为{% if forloop.counter == 1 %} {#your code here#} {%endfor%}
这是从{{ user }} {{loop.counter}}
到{{ user }} {{forloop.counter}}
答案 5 :(得分:0)
现实生活中的例子
{% for image in item['images'] %}
{% set image_id = item_id ~ '-preview-' ~ loop.index0 %}
<div id="{{ image_id }}" class="overlay">
<a class="cancel" href="#{{ item_id }}"></a>
<div class="popup">
{% set src = image if image.startswith('http') else '/static/images/store/' ~ item_id ~ '/' ~ image %}
<a href="{{ src }}"><img class="modal-img" src="{{ src }}"/></a>
</div>
</div>
{% endfor %}