¿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>
<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")
{% set item_count = items | length %}
siempre queitems
sea una lista, dict, etc.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.
fuente
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:
fuente