如何在Django模板中检查集合的大小?

如何在Django模板中检查集合的大小?,django,django-templates,Django,Django Templates,我的Django模板中有一个列表。只有当列表的大小大于零时,我才想做一些事情 我尝试了myList | length和myList | length|u,但都没有成功 我找遍了,没有看到任何例子。如何检查此项?如果列表没有元素,则列表被视为False,因此您可以执行以下操作: {% if mylist %} <p>I have a list!</p> {% else %} <p>I don't have a list!</p> {%

我的Django模板中有一个列表。只有当列表的大小大于零时,我才想做一些事情

我尝试了
myList | length
myList | length|u
,但都没有成功


我找遍了,没有看到任何例子。如何检查此项?

如果列表没有元素,则列表被视为
False
,因此您可以执行以下操作:

{% if mylist %}
    <p>I have a list!</p>
{% else %}
    <p>I don't have a list!</p>
{% endif %}
{%if mylist%}
我有一张单子

{%else%} 我没有名单

{%endif%}
请参见:仅使用,重现他们的示例:

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

如果您使用的是最近的Django,则引入了一个{%empty%}块,允许您编写

{% for athlete in athlete_list %}
  ...
{% empty %}
  No athletes
{% endfor %}

当您要执行的操作涉及对可能为空的列表进行特殊处理时,此功能非常有用。

如果您尝试了myList | length和myList | length | U,但未获得所需结果,则应使用myList.count。您可以尝试:

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

集合。无括号计数

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

我需要集合长度来决定是否呈现表

但是不知道为什么@Django 2.1.7选择的答案会在我的
forloop
之后失败(清空)

我必须使用
{%if-forloop.first%}{%endif%}
来克服:


{服务中记录的%u列表%}
{%if-forloop.first%}
日期
{%endif%}
{{record.date}
{%endfor%}
这项工作:

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

为什么这里有这么多的答案,为什么有这么多的困惑是,这并不总是有效的。我认为模板过滤器一度不能用于
if
语句的参数,这是后来添加的。现在还可以执行一些操作,如
{%if myList | length>=3%}
。过滤器应与len(myList)等效,因此任何类型的对象都可以处理长度过滤器。

参考:|长度我总是与烧瓶中的jinja模板和django混淆。谢谢你提供的信息。非常有用。
length
过滤器似乎在条件块中也能工作。e、 g.
{%if运动员名单|长度>1%}…{%endif%}
我对这有多少选票感到震惊。。。如果
myList
是一个
列表
,那么这将调用
list.count()
,这将引发一个错误,该错误在模板中被掩盖,并被视为假值。
count
方法用于计算与传入值匹配的实例数。但是,如果
myList
是一个查询集,则此操作有效。