Answer a question

I want to be able to output the current loop iteration to my template.

According to the docs, there is a loop.counter variable that I am trying to use:

<ul>
{% for user in userlist %}
  <li>
      {{ user }} {{loop.counter}}
  </li>
      {% if loop.counter == 1 %}
          This is the First user
      {% endif %}
{% endfor %}
</ul>

But is being outputed to my template. What is the correct syntax?

Answers

The counter variable inside the loop is called loop.index in Jinja2.

>>> from jinja2 import Template

>>> s = "{% for element in elements %}{{loop.index}} {% endfor %}"
>>> Template(s).render(elements=["a", "b", "c", "d"])
1 2 3 4

In addition to loop.index, there is also

  • loop.index0 (index starting at 0)
  • loop.revindex (reverse index; ending at 1)
  • loop.revindex0 (reverse index; ending at 0)
  • Even more at http://jinja.pocoo.org/docs/templates/.
Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐