183

Djangoテンプレートにリストがあります。リストのサイズがゼロより大きい場合にのみ何かをしたい。

私は試しましたが、成功していませんmyList|lengthmyList|length_is

私はあちこちを検索しましたが、例はありません。どうすればこれを確認できますか?

4

8 に答える 8

338

https://docs.djangoproject.com/en/stable/ref/templates/builtins/#ifを参照してください:例を再現するには、を使用してください。

{% if athlete_list %}
    Number of athletes: {{ athlete_list|length }}
{% else %}
    No athletes.
{% endif %}
于 2009-05-23T17:53:24.943 に答える
112

最近のDjangoを使用している場合、チェンジリスト9530では{%empty%}ブロックが導入され、次のように記述できるようになりました。

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

あなたがしたいことが空であるかもしれないリストのための特別な扱いを含むとき、役に立ちます。

于 2009-05-24T00:35:48.320 に答える
25

リストは要素がない場合と見なされるFalseため、次のように実行できます。

{% if mylist %}
    <p>I have a list!</p>
{% else %}
    <p>I don't have a list!</p>
{% endif %}
于 2009-05-23T17:52:10.670 に答える
11

myList|lengthとmyList|length_isを試しても、目的の結果が得られない場合は、次を使用する必要があります。myList.count

于 2011-04-15T07:31:19.657 に答える
8

あなたはで試すことができます:

{% if theList.object_list.count > 0 %}
    blah, blah...
{% else %}
    blah, blah....
{% endif %} 
于 2018-04-02T06:28:12.243 に答える
1

Collection.countブラケットなし

{% if request.user.is_authenticated %}
{{wishlists.count}}
{% else %}0{% endif %}
于 2019-03-11T00:45:36.233 に答える
1

テーブルをレンダリングするかどうかを決定するためにコレクションの長さが必要です<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>
于 2019-07-31T04:46:28.367 に答える
1

これは機能します:

{% if myList|length %}
    Do something!
{% endif %}

ここに非常に多くの答えがある理由と、非常に多くの混乱がある理由は、これが常に機能するとは限らないということです。ifある時点で、ステートメントの引数にテンプレートフィルタを使用できなかったと思いますが、これは後で追加されました。などの操作も可能になりました{% if myList|length >= 3 %}len(myList)フィルタは、フィルタを処理できるオブジェクトと同等の処理を実行する必要があり|lengthます。

于 2021-03-17T18:01:33.603 に答える