如何在Django模板中检查集合的大小?
我的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> {%
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
是一个查询集,则此操作有效。