Jak mogę sprawdzić rozmiar kolekcji w szablonie Django?


147

Mam listę w moim szablonie Django. Chcę coś zrobić tylko wtedy, gdy rozmiar listy jest większy niż zero.

Próbowałem myList|lengthi myList|length_isale nie były one udane.

Szukałem wszędzie i nie widzę żadnych przykładów. Jak mogę to sprawdzić?

Odpowiedzi:


279

Zobacz https://docs.djangoproject.com/en/stable/ref/templates/builtins/#if : po prostu użyj, aby odtworzyć ich przykład:

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

| length Zawsze mylę się z szablonami jinja w Flasku iz django. Dzięki za informację. Naprawdę pomocny.
Doogle

7
lengthFiltr wydaje się również do pracy w blokach warunkowych. np.{% if athlete_list|length > 1 %}...{% endif %}
Thismatters

93

Jeśli używasz niedawnego Django, lista zmian 9530 wprowadziła blok {% empty%}, umożliwiający pisanie

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

Przydatne, gdy coś, co chcesz zrobić, obejmuje iterację po niepustej liście.



20

Uważa się False, że lista nie zawiera elementów, więc możesz zrobić coś takiego:

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

13

Jeśli wypróbowałeś myList | length i myList | length_is i nie daje to oczekiwanych rezultatów, powinieneś użyć myList.count


6

Możesz spróbować z:

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

1

Kolekcja.count bez nawiasu

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

1

Potrzebuję długości kolekcji, aby zdecydować, czy powinienem renderować tabelę <thead></thead>

ale nie wiem, dlaczego @Django 2.1.7 wybrana odpowiedź zakończy się niepowodzeniem (pusta) forloop.

Muszę {% if forloop.first %} {% endif %}przezwyciężyć:

<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>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.