Frage

Wie bekomme 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>
War es hilfreich?

Lösung

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

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

{% if products|length > 1 %}

Die gebauten Filter von Jinja2 sind dokumentiert hier; und speziell, wie Sie bereits gefunden haben, length (und sein Synonym count) wird dokumentiert an:

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

Also wieder, wie du gefunden hast, {{products|count}} (oder gleichwertig {{products|length}}) In Ihrer Vorlage gibt die "Anzahl der Produkte" ("Länge der Liste")

Andere Tipps

Alex 'Kommentar sieht gut aus, aber ich war immer noch mit der Verwendung von Reichweite verwechselt. Das Folgende funktionierte für mich, während ich an einem für die Bedingung mit Länge in Reichweite arbeitete.

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

Ich habe ein Problem mit der Länge von keiner erlebt, was zu einem internen Serverfehler führt: TypeError: Objekt des Typs 'Nichtetype' hat keinen len ()

Meine Problemumgehung zeigt nur 0 an, wenn das Objekt keine ist, und berechnen Sie die Länge anderer Typen, wie in meinem Fall die Liste:

{{'0' if linked_contacts == None else linked_contacts|length}}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top