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


147

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

Ich habe es versucht myList|lengthund myList|length_isaber sie waren nicht erfolgreich.

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

Antworten:


279

Siehe https://docs.djangoproject.com/de/stable/ref/templates/builtins/#if : Verwenden Sie einfach, um das Beispiel zu reproduzieren:

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

| Länge Ich werde immer mit Jinja-Vorlagen in Flask und mit Django verwechselt. Danke für die Auskunft. Wirklich hilfreich.
Doogle

7
Der lengthFilter scheint auch in bedingten Blöcken zu funktionieren. zB{% if athlete_list|length > 1 %}...{% endif %}
Thismatters


20

Eine Liste wird als solche betrachtet, Falsewenn sie keine Elemente enthält. Sie können also Folgendes tun:

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

13

Wenn Sie myList | length und myList | length_is ausprobiert haben und die gewünschten Ergebnisse nicht erzielt werden, sollten Sie verwenden myList.count


6

Sie können versuchen mit:

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

1

Collection.count keine Klammer

{% if request.user.is_authenticated %}
{{wishlists.count}}
{% else %}0{% endif %}

1

Ich benötige die Sammlungslänge, um zu entscheiden, ob ich eine Tabelle rendern soll <thead></thead>

aber ich weiß nicht warum @Django 2.1.7 die gewählte Antwort wird meine forloopdanach scheitern (leer) .

Ich muss verwenden, um {% if forloop.first %} {% endif %}zu überwinden:

<table>
    {% for record in service_list %}
        {% if forloop.first %}
            <thead>
            <tr>
                <th>日期</th>
            </tr>
            </thead>
        {% endif %}
        <tbody>
        <tr>
            <td>{{ record.date }}</td>
        </tr>
    {% endfor %}
    </tbody>
</table>
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.