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>
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>
Réponses:
<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 %}
tant items
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.
{% 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 %}
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:
{{'0' if linked_contacts == None else linked_contacts|length}}