Django 템플릿 내에서 컬렉션의 크기를 어떻게 확인할 수 있습니까?


147

Django 템플릿에 목록이 있습니다. 목록의 크기가 0보다 큰 경우에만 무언가를하고 싶습니다.

나는 시도 myList|length하고 myList|length_is있지만 성공하지 않았습니다.

나는 모든 곳을 수색했지만 어떤 예도 보이지 않습니다. 이것을 어떻게 확인할 수 있습니까?

답변:


279

참조 https://docs.djangoproject.com/en/stable/ref/templates/builtins/#if을 : 단지 사용을, 자신의 예를 재현 :

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

나는 항상 플라스크의 jinja 템플릿과 django와 혼동됩니다. 정보 주셔서 감사합니다. 정말 도움이됩니다.
Doogle

7
length필터는 조건 블록에서 작동하는 것 같다. 예{% if athlete_list|length > 1 %}...{% endif %}
Thismatters


20

목록에 False요소가 없으면 다음과 같이 할 수 있습니다.

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

13

myList | length 및 myList | length_is를 시도했지만 원하는 결과를 얻지 못하면 myList.count


6

당신은 시도 할 수 있습니다 :

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


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>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.