Search code examples
pythonjinja2templating-engine

How to output loop.counter in python jinja template?


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?


Solution

  • 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