Bagaimana saya bisa memeriksa ukuran koleksi di dalam template Django?


147

Saya punya daftar di template Django saya. Saya ingin melakukan sesuatu hanya jika ukuran daftar lebih besar dari nol.

Saya sudah mencoba myList|lengthdan myList|length_istetapi mereka belum berhasil.

Saya telah mencari di seluruh dan tidak melihat contoh. Bagaimana saya bisa memeriksanya?

Jawaban:


279

Lihat https://docs.djangoproject.com/en/stable/ref/templates/builtins/#if : cukup gunakan, untuk mereproduksi contoh mereka:

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

| panjang saya selalu bingung dengan jinja templating di Flask dan dengan Django. Terima kasih untuk informasi. Sangat membantu.
Doogle

7
The lengthfilter juga tampaknya bekerja di blok bersyarat. eg{% if athlete_list|length > 1 %}...{% endif %}
Thismatters


20

Daftar dianggap Falsejika tidak memiliki elemen, sehingga Anda dapat melakukan sesuatu seperti ini:

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

13

Jika Anda mencoba myList | length dan myList | length_is dan tidak mendapatkan hasil yang diinginkan, maka Anda harus menggunakan myList.count


6

Anda dapat mencoba dengan:

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

1

Collection.count tidak ada braket

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

1

Saya perlu panjang koleksi untuk memutuskan apakah saya harus membuat tabel <thead></thead>

tetapi tidak tahu mengapa @ Django 2.1.7 jawaban yang dipilih akan gagal (kosong) forloopsesudahnya.

Saya terbiasa {% if forloop.first %} {% endif %}mengatasi:

<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>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.