207 Stimmen

Wie kann ich die Größe einer Sammlung innerhalb einer Django-Vorlage überprüfen?

Ich habe eine Liste in meiner Django-Vorlage. Ich möchte etwas tun, nur wenn die Größe der Liste größer als Null ist.

Ich habe versucht myList|length y myList|length_is aber sie waren nicht erfolgreich.

Ich habe überall gesucht und keine Beispiele gefunden. Wie kann ich das überprüfen?

380voto

Alex Martelli Punkte 805329

Ver https://docs.djangoproject.com/en/stable/ref/templates/builtins/#if : einfach verwenden, um ihr Beispiel zu reproduzieren:

{% if athlete_list %}
    Number of athletes: {{ athlete_list|length }}
{% else %}
    No athletes.
{% endif %}

0 Stimmen

|length Ich bekomme immer mit jinja Templating in Flask und mit django verwirrt. Danke für die Informationen. Wirklich hilfreich.

19 Stimmen

El length Filter scheint auch in bedingten Blöcken zu funktionieren, z. B. {% if athlete_list|length > 1 %}...{% endif %}

0 Stimmen

Gibt es dafür keine Inline-Option (in Zeile I)?

130voto

Dave W. Smith Punkte 23003

Wenn Sie eine aktuelle Django, Änderungsliste 9530 wurde ein {% empty %}-Block eingeführt, mit dem Sie Folgendes schreiben können

{% for athlete in athlete_list %}
  ...
{% empty %}
  No athletes
{% endfor %}

Nützlich, wenn das, was Sie tun wollen, eine besondere Behandlung von Listen erfordert, die möglicherweise leer sind.

1 Stimmen

28voto

mipadi Punkte 377834

Eine Liste gilt als False wenn es keine Elemente hat, also kann man so vorgehen:

{% if mylist %}
    <p>I have a list!</p>
{% else %}
    <p>I don't have a list!</p>
{% endif %}

13voto

Nilesh Tighare Punkte 875

Wenn Sie myList|length und myList|length_is ausprobiert haben und nicht die gewünschten Ergebnisse erhalten, dann sollten Sie myList.count

2 Stimmen

Ich bin schockiert, wie viele Bewertungen dies hat... Wenn myList es un list dann ruft dies list.count() was einen Fehler auslöst, der in der Vorlage maskiert wird und als falscher Wert behandelt wird. Die count Methode ist es, die Anzahl der Instanzen zu zählen, die mit dem übergebenen Wert übereinstimmen. Dies funktioniert jedoch, wenn myList ist ein Queryset.

9voto

Atarx Punkte 81

Sie können es mit versuchen:

{% if theList.object_list.count > 0 %}
    blah, blah...
{% else %}
    blah, blah....
{% endif %}

1 Stimmen

Dies gilt nur für Queryset, nicht aber für die Array-Länge

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X