Làm cách nào tôi có thể kiểm tra kích thước của bộ sưu tập trong mẫu Django?


147

Tôi có một danh sách trong mẫu Django của tôi. Tôi muốn làm một cái gì đó chỉ khi kích thước của danh sách lớn hơn không.

Tôi đã thử myList|lengthmyList|length_ishọ đã không thành công.

Tôi đã tìm kiếm khắp nơi và không thấy bất kỳ ví dụ nào. Làm thế nào tôi có thể kiểm tra điều này?

Câu trả lời:


279

Xem https://docs.djangoproject.com/en/urdy/ref/temsheet/builtins/#if : chỉ sử dụng, để sao chép ví dụ của họ:

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

Tôi luôn bị nhầm lẫn với jinja templating trong Flask và với django. Cảm ơn vì thông tin. Thực sự hữu ích.
Doogle

7
Bộ lengthlọc dường như cũng hoạt động trong các khối có điều kiện. ví dụ{% if athlete_list|length > 1 %}...{% endif %}
Thismatters


20

Một danh sách được coi là Falsenếu nó không có các yếu tố, vì vậy bạn có thể làm một cái gì đó như thế này:

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

13

Nếu bạn đã thử myList | length và myList | length_is và nó không nhận được kết quả mong muốn, thì bạn nên sử dụng myList.count


6

Bạn có thể thử với:

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

1

Collection.count không có khung

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

1

Tôi cần độ dài bộ sưu tập để quyết định xem tôi có nên kết xuất bảng không <thead></thead>

nhưng không biết tại sao @Django 2.1.7 câu trả lời được chọn sẽ thất bại (trống) forloopsau đó.

Tôi đã sử dụng {% if forloop.first %} {% endif %}để vượt qua:

<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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.