Abrufen der Länge einer Liste in einer jinja2-Vorlage


315

Wie erhalte ich die Anzahl der Elemente in einer Liste in der jinja2-Vorlage?

Zum Beispiel in Python:

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

und in jinja2

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

Antworten:


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

Sie können diese Syntax auch in Ausdrücken wie verwenden

{% if products|length > 1 %}

Die integrierten Filter von jinja2 sind hier dokumentiert . und speziell, wie Sie bereits gefunden haben, length(und sein Synonym count) ist dokumentiert für:

Gibt die Anzahl der Elemente einer Sequenz oder Zuordnung zurück.

Wie Sie gefunden haben {{products|count}}(oder gleichwertig {{products|length}}), wird in Ihrer Vorlage die "Anzahl der Produkte" ("Länge der Liste") angegeben.


Können wir auch nach undefinierten suchen? Ich muss {% verwenden, wenn Produkte keine sind ...%}, was ziemlich anstrengend ist
Nam G VU

@wvxvw das funktioniert: {% set item_count = items | length %}solange itemses eine Liste, ein
Diktat

7

Alex 'Kommentar sieht gut aus, aber ich war immer noch verwirrt mit der Verwendung von Range. Das Folgende hat für mich funktioniert, während ich an einer Bedingung mit Länge innerhalb des Bereichs gearbeitet habe.

{% 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 %}

2

Ich habe ein Problem mit der Länge None festgestellt, das zu einem internen Serverfehler führt: TypeError: Objekt vom Typ 'NoneType' hat keine len ()

Meine Problemumgehung zeigt nur 0 an, wenn das Objekt Keine ist, und berechnet die Länge anderer Typen, wie z. B. Liste in meinem Fall:

{{'0' if linked_contacts == None else linked_contacts|length}}

Sie können keine eingebaute Funktion verwenden, um auf Keine zu testen . Weitere Informationen finden Sie hier: https://jinja.palletsprojects.com/en/2.10.x/templates/#none . Beispiel ist in diesem Thread: /programming/19614027/jinja2-template-variable-if-none-object-set-a-default-value
Wojciech Jakubas
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.