Mam listę w moim szablonie Django. Chcę coś zrobić tylko wtedy, gdy rozmiar listy jest większy niż zero.
Próbowałem myList|length
i myList|length_is
ale nie były one udane.
Szukałem wszędzie i nie widzę żadnych przykładów. Jak mogę to sprawdzić?
Mam listę w moim szablonie Django. Chcę coś zrobić tylko wtedy, gdy rozmiar listy jest większy niż zero.
Próbowałem myList|length
i myList|length_is
ale nie były one udane.
Szukałem wszędzie i nie widzę żadnych przykładów. Jak mogę to sprawdzić?
Odpowiedzi:
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
Filtr wydaje się również do pracy w blokach warunkowych. np.{% if athlete_list|length > 1 %}...{% endif %}
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.
Jeśli wypróbowałeś myList | length i myList | length_is i nie daje to oczekiwanych rezultatów, powinieneś użyć myList.count
Kolekcja.count bez nawiasu
{% if request.user.is_authenticated %}
{{wishlists.count}}
{% else %}0{% endif %}
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>