Comment obtenir le nombre d'éléments dans une liste dans le modèle jinja2?
Par exemple, en Python:
print(template.render(products=[???]))
et dans jinja2
<span>You have {{what goes here?}} products</span>
<span>You have {{products|length}} products</span>
Vous pouvez également utiliser cette syntaxe dans des expressions comme
{% if products|length > 1 %}
Les filtres intégrés de jinja2 sont documentés ici ; et spécifiquement, comme vous l'avez déjà trouvé, length
(et son synonyme count
) est documenté pour:
Renvoie le nombre d'éléments d'une séquence ou d'un mappage.
Donc, encore une fois, comme vous l'avez trouvé {{products|count}}
(ou de manière équivalente {{products|length}}
) dans votre modèle, le "nombre de produits" ("longueur de la liste") sera indiqué .
{% set item_count = items | length %}
tantitems
qu'une liste, un dict, etc.Le commentaire d'Alex semble bon mais j'étais toujours confus avec l'utilisation de la gamme. Ce qui suit a fonctionné pour moi tout en travaillant sur une condition pour utiliser la longueur dans la plage.
la source
J'ai rencontré un problème avec la longueur de None, ce qui conduit à une erreur de serveur interne: TypeError: l'objet de type 'NoneType' n'a pas de len ()
Ma solution de contournement affiche simplement 0 si l'objet est Aucun et calcule la longueur d'autres types, comme la liste dans mon cas:
la source