Bir Django şablonu içindeki bir koleksiyonun boyutunu nasıl kontrol edebilirim?


147

Django şablonumda bir liste var. Sadece listenin boyutu sıfırdan büyükse bir şeyler yapmak istiyorum.

Ben denedim myList|lengthve myList|length_isfakat başarılı olamamıştır.

Her yerde arama yaptım ve örnek göremiyorum. Bunu nasıl kontrol edebilirim?

Yanıtlar:


280

Bkz. Https://docs.djangoproject.com/en/stable/ref/templates/builtins/#if : sadece örneklerini yeniden oluşturmak için kullanın:

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

| uzunluk Ben her zaman Flask ve django jinja templating ile karıştırılır. Bilgi için teşekkürler. Gerçekten yardımcı.
Doogle

7
lengthFiltre ayrıca koşullu bloklarda çalışması gibi görünüyor. ör.{% if athlete_list|length > 1 %}...{% endif %}
Thismatters


20

Bir Falseöğenin öğe yoksa olduğu kabul edilir , böylece böyle bir şey yapabilirsiniz:

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

13

MyList | length ve myList | length_is öğelerini denediyseniz ve istenen sonuçları almıyorsanız, şunu kullanmalısınız: myList.count


6

Şunları deneyebilirsiniz:

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

1

Koleksiyon. Parantez yok

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

1

Tablo oluşturup oluşturmamama karar vermek için toplama uzunluğuna ihtiyacım var <thead></thead>

ama neden @Django 2.1.7 seçilen cevabın daha forloopsonra başarısız olacağını (boş) bilmiyorum .

{% if forloop.first %} {% endif %}Üstesinden gelmek için kullanmalıyım :

<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>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.