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,changelist 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

这有效:

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

为什么这里有这么多答案以及为什么有这么多困惑是这并不总是有效。我认为在某一时刻模板过滤器不能用于if语句的参数,这是后来添加的。现在也可以执行诸如{% if myList|length >= 3 %}. 过滤器应该等效于len(myList)任何可以处理的对象也可以处理|length过滤器。

于 2021-03-17T18:01:33.603 回答
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.7forloop选择的答案会在我之后失败(空) 。

我得用来{% 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 回答