Djangoテンプレートにリストがあります。リストのサイズがゼロより大きい場合にのみ何かをしたい。
私は試しましたが、成功していませんmyList|length
。myList|length_is
私はあちこちを検索しましたが、例はありません。どうすればこれを確認できますか?
Djangoテンプレートにリストがあります。リストのサイズがゼロより大きい場合にのみ何かをしたい。
私は試しましたが、成功していませんmyList|length
。myList|length_is
私はあちこちを検索しましたが、例はありません。どうすればこれを確認できますか?
https://docs.djangoproject.com/en/stable/ref/templates/builtins/#ifを参照してください:例を再現するには、を使用してください。
{% if athlete_list %}
Number of athletes: {{ athlete_list|length }}
{% else %}
No athletes.
{% endif %}
最近のDjangoを使用している場合、チェンジリスト9530では{%empty%}ブロックが導入され、次のように記述できるようになりました。
{% for athlete in athlete_list %}
...
{% empty %}
No athletes
{% endfor %}
あなたがしたいことが空であるかもしれないリストのための特別な扱いを含むとき、役に立ちます。
リストは要素がない場合と見なされるFalse
ため、次のように実行できます。
{% if mylist %}
<p>I have a list!</p>
{% else %}
<p>I don't have a list!</p>
{% endif %}
myList|lengthとmyList|length_isを試しても、目的の結果が得られない場合は、次を使用する必要があります。myList.count
あなたはで試すことができます:
{% if theList.object_list.count > 0 %}
blah, blah...
{% else %}
blah, blah....
{% endif %}
Collection.countブラケットなし
{% if request.user.is_authenticated %}
{{wishlists.count}}
{% else %}0{% endif %}
テーブルをレンダリングするかどうかを決定するためにコレクションの長さが必要です<thead></thead>
しかし、 @ Django 2.1.7が選択した答えが後で失敗する(空になる)理由がわかりませんforloop
。
私は{% if forloop.first %} {% endif %}
克服するために使用する必要があります:
<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>
これは機能します:
{% if myList|length %}
Do something!
{% endif %}
ここに非常に多くの答えがある理由と、非常に多くの混乱がある理由は、これが常に機能するとは限らないということです。if
ある時点で、ステートメントの引数にテンプレートフィルタを使用できなかったと思いますが、これは後で追加されました。などの操作も可能になりました{% if myList|length >= 3 %}
。len(myList)
フィルタは、フィルタを処理できるオブジェクトと同等の処理を実行する必要があり|length
ます。