How to output loop.counter to jinja python template?

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

According to the docs: http://wsgiarea.pocoo.org/jinja/docs/loops.html , there is a loop.counter variable that I'm trying to use.

I have the following:

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

Although nothing is being output to my template. What is the correct syntax?

+106
python jinja2
Aug 27 2018-12-12T00:
source share
3 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 

See http://jinja.pocoo.org/docs/templates/ for more details.

+248
Aug 27 '12 at 18:08
source share

Inside the for-loop block, you can access some special variables, including loop.index --but no loop.counter . From 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). 
+17
Jul 25 '14 at 15:24
source share

if you use django use forloop.counter instead of loop.counter

 <ul> {% for user in userlist %} <li> {{ user }} {{forloop.counter}} </li> {% if forloop.counter == 1 %} This is the First user {% endif %} {% endfor %} </ul> 
0
Jan 10 '19 at 2:52
source share



All Articles