如何在python jinja模板中输出loop.counter?

Rol*_*ndo 134 python jinja2

我希望能够将当前循环迭代输出到我的模板.

根据文档: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>
Run Code Online (Sandbox Code Playgroud)

虽然我的模板没有输出任何内容.什么是正确的语法?

sig*_*igi 309

循环中的计数器变量在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
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见http://jinja.pocoo.org/docs/templates/.

  • 值得一提的是,如果你想要一个基于0的索引,你可以使用``loop.index0``代替. (137认同)
  • 如果存在嵌套for循环怎么办?那里将如何运作?在嵌套 for 内部时如何访问外部 for 循环的索引? (9认同)

toz*_*CSS 27

在for循环块中,您可以访问一些特殊变量,包括 - loop.index但不loop.counter.来自官方文档:

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).
Run Code Online (Sandbox Code Playgroud)


Dan*_*ler 21

如果您使用的是 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>
Run Code Online (Sandbox Code Playgroud)

  • 这个问题显然是在问 jinja,为什么我们在这里给出关于 Django 模板的答案...... (3认同)