How to output loop.counter in python jinja template?
--------------------------------------------------
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Underwater World
--
Chapters
00:00 How To Output Loop.Counter In Python Jinja Template?
00:26 Accepted Answer Score 592
00:59 Answer 2 Score 130
01:21 Answer 3 Score 36
01:36 Answer 4 Score 0
01:52 Thank you
--
Full question
https://stackoverflow.com/questions/1214...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #jinja2 #templatingengine
#avk47
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
and get $2,000 discount on your first invoice
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Underwater World
--
Chapters
00:00 How To Output Loop.Counter In Python Jinja Template?
00:26 Accepted Answer Score 592
00:59 Answer 2 Score 130
01:21 Answer 3 Score 36
01:36 Answer 4 Score 0
01:52 Thank you
--
Full question
https://stackoverflow.com/questions/1214...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #jinja2 #templatingengine
#avk47
ACCEPTED ANSWER
Score 592
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 at0)loop.revindex(reverse index; ending at1)loop.revindex0(reverse index; ending at0)- Even more at http://jinja.pocoo.org/docs/templates/.
ANSWER 2
Score 130
Inside of a for-loop block, you can access some special variables, such as loop.index (but not loop.counter). From 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. |
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). |
ANSWER 3
Score 36
If you are using 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>
ANSWER 4
Score 0
Real-life example:
{% 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 %}