¿Cómo generar loop.counter en la plantilla python jinja?
Quiero poder enviar la iteración del bucle actual a mi plantilla.
Según los documentos , hay una loop.counter
variable que estoy intentando usar:
<ul>
{% for user in userlist %}
<li>
{{ user }} {{loop.counter}}
</li>
{% if loop.counter == 1 %}
This is the First user
{% endif %}
{% endfor %}
</ul>
Pero se envía a mi plantilla. ¿Cual es la sintaxis correcta?
Aceptado
La variable de contador dentro del bucle se llama loop.index
en 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
Además de loop.index
, también hay
loop.index0
(índice que comienza en0
)loop.revindex
(índice inverso; termina en1
)loop.revindex0
(índice inverso; termina en0
)- Aún más en http://jinja.pocoo.org/docs/templates/ .
Dentro de un for
bloque -loop, puede acceder a algunas variables especiales, como loop.index
(pero no loop.counter
). De los documentos oficiales :
Variable | Descripción |
---|---|
loop.index |
La iteración actual del bucle. (1 indexado) |
loop.index0 |
La iteración actual del bucle. (0 indexado) |
loop.revindex |
El número de iteraciones desde el final del ciclo (1 indexada) |
loop.revindex0 |
El número de iteraciones desde el final del ciclo (0 indexado) |
loop.first |
Verdadero si es la primera iteración. |
loop.last |
Verdadero si es la última iteración. |
loop.length |
El número de elementos de la secuencia. |
loop.cycle |
Una función auxiliar para alternar entre una lista de secuencias. |
loop.depth |
Indica qué tan profundo está actualmente el renderizado en un bucle recursivo. Comienza en el nivel 1 |
loop.depth0 |
Indica qué tan profundo está actualmente el renderizado en un bucle recursivo. Comienza en el nivel 0 |
loop.previtem |
El elemento de la iteración anterior del bucle. Indefinido durante la primera iteración. |
loop.nextitem |
El elemento de la siguiente iteración del bucle. Indefinido durante la última iteración. |
loop.changed(*val) |
Verdadero si se llamó previamente con un valor diferente (o no se llamó en absoluto). |