我的 Django 模板中有一个列表。只有当列表的大小大于零时,我才想做一些事情。
我试过了myList|length
,myList|length_is
但他们没有成功。
我已经搜索了所有内容,但没有看到任何示例。我怎样才能检查这个?
我的 Django 模板中有一个列表。只有当列表的大小大于零时,我才想做一些事情。
我试过了myList|length
,myList|length_is
但他们没有成功。
我已经搜索了所有内容,但没有看到任何示例。我怎样才能检查这个?
请参阅https://docs.djangoproject.com/en/stable/ref/templates/builtins/#if:只需使用,重现他们的例子:
{% if athlete_list %}
Number of athletes: {{ athlete_list|length }}
{% else %}
No athletes.
{% endif %}
如果您使用的是最近的 Django,changelist 9530引入了一个 {% empty %} 块,允许您编写
{% for athlete in athlete_list %}
...
{% empty %}
No athletes
{% endfor %}
当您想要做的事情涉及对可能为空的列表进行特殊处理时很有用。
如果列表False
没有元素,则认为它是一个列表,因此您可以执行以下操作:
{% if mylist %}
<p>I have a list!</p>
{% else %}
<p>I don't have a list!</p>
{% endif %}
如果您尝试了 myList|length 和 myList|length_is 并且没有得到想要的结果,那么您应该使用myList.count
您可以尝试:
{% if theList.object_list.count > 0 %}
blah, blah...
{% else %}
blah, blah....
{% endif %}
这有效:
{% if myList|length %}
Do something!
{% endif %}
为什么这里有这么多答案以及为什么有这么多困惑是这并不总是有效。我认为在某一时刻模板过滤器不能用于if
语句的参数,这是后来添加的。现在也可以执行诸如{% if myList|length >= 3 %}
. 过滤器应该等效于len(myList)
任何可以处理的对象也可以处理|length
过滤器。
Collection.count 无括号
{% if request.user.is_authenticated %}
{{wishlists.count}}
{% else %}0{% endif %}
我需要集合长度来决定是否应该渲染表格<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>