Obtener longitudes de una lista en una plantilla jinja2

315

¿Cómo obtengo el número de elementos en una lista en la plantilla jinja2?

Por ejemplo, en Python:

print(template.render(products=[???]))

y en jinja2

<span>You have {{what goes here?}} products</span>
flybywire
fuente

Respuestas:

533
<span>You have {{products|length}} products</span>

También puede usar esta sintaxis en expresiones como

{% if products|length > 1 %}

Los filtros incorporados de jinja2 se documentan aquí ; y específicamente, como ya ha encontrado, length(y su sinónimo count) está documentado para:

Devuelve el número de elementos de una secuencia o mapeo.

Entonces, nuevamente, como lo ha encontrado, {{products|count}}(o equivalente {{products|length}}) en su plantilla le dará el "número de productos" ("longitud de la lista")

Alex Martelli
fuente
¿Podemos verificar si no está definido también? Tengo que usar {% si los productos no son ninguno ...%} lo cual es bastante agotador
Nam G VU
@wvxvw esto funciona: {% set item_count = items | length %}siempre que itemssea ​​una lista, dict, etc.
kbolino
7

El comentario de Alex se ve bien, pero todavía estaba confundido con el uso del rango. Lo siguiente funcionó para mí mientras trabajaba en una condición for usando longitud dentro del rango.

{% for i in range(0,(nums['list_users_response']['list_users_result']['users'])| length) %}
<li>    {{ nums['list_users_response']['list_users_result']['users'][i]['user_name'] }} </li>
{% endfor %}
Ashwin
fuente
2

He experimentado un problema con la longitud de None, lo que lleva a un error interno del servidor: TypeError: el objeto de tipo 'NoneType' no tiene len ()

Mi solución es solo mostrar 0 si el objeto es Ninguno y calcular la longitud de otros tipos, como la lista en mi caso:

{{'0' if linked_contacts == None else linked_contacts|length}}
Dmitri
fuente
Puede usar la función incorporada none para probar None . Consulte más aquí: https://jinja.palletsprojects.com/en/2.10.x/templates/#none . El ejemplo está en este hilo: /programming/19614027/jinja2-template-variable-if-none-object-set-a-default-value
Wojciech Jakubas