获取Jinja2模板中列表的长度

本文介绍了如何在Jinja2模板中获取列表的元素数量。可以使用内置过滤器`|length`来获取列表长度,该过滤器返回序列或映射的项目数。同时,针对遇到的长度为None导致的错误,提出了显示0作为替代的解决方案。
摘要由CSDN通过智能技术生成

本文翻译自:Get lengths of a list in a jinja2 template

How do I get the number of elements in a list in jinja2 template? 如何获得jinja2模板中列表中的元素数?

For example, in Python: 例如,在Python中:

print(template.render(products=[???]))

and in jinja2 和在jinja2

<span>You have {{what goes here?}} products</span>

#1楼

参考:https://stackoom.com/question/69b3/获取Jinja-模板中列表的长度


#2楼

<span>You have {{products|length}} products</span>

You can also use this syntax in expressions like 您也可以在以下表达式中使用此语法

{% if products|length > 1 %}

jinja2's builtin filters are documented here ; jinja2的内置过滤器记录在这里 and specifically, as you've already found, length (and its synonym count ) is documented to: 具体来说,正如您已经发现的, length (及其同义词count )记录为:

Return the number of items of a sequence or mapping. 返回序列或映射的项目数。

So, again as you've found, {{products|count}} (or equivalently {{products|length}} ) in your template will give the "number of products" ("length of list") 因此,正如您所发现的,模板中的{{products|count}} (或等效的{{products|length}} )将给出“产品数量”(“列表长度”)


#3楼

Alex' comment looks good but I was still confused with using range. 亚历克斯的评论看起来不错,但我仍然对使用范围感到困惑。 The following worked for me while working on a for condition using length within range. 以下是在使用长度范围内的for条件下为我工作的方法。

{% for i in range(0,(nums['list_users_response']['list_users_result']['users'])| length) %}
<li>    {{ nums['list_users_response']['list_users_result']['users'][i]['user_name'] }} </li>
{% endfor %}

#4楼

I've experienced a problem with length of None, which leads to Internal Server Error: TypeError: object of type 'NoneType' has no len() 我遇到了长度为None的问题,这导致内部服务器错误:TypeError:类型为“ NoneType”的对象没有len()

My workaround is just displaying 0 if object is None and calculate length of other types, like list in my case: 我的解决方法是,如果object为None,则显示0并计算其他类型的长度,例如我的列表:

{{'0' if linked_contacts == None else linked_contacts|length}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值