在jinja2模板中获取列表的长度

我如何在jinj2模板中获得列表中的元素数量?

例如,在Python中:

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

在jinja2

<span>You have {{what goes here?}} products</span>
391019 次浏览
<span>You have \{\{products|length}} products</span>

您还可以在表达式中使用此语法,例如

{% if products|length > 1 %}

jinja2的内置过滤器有文档在这里;具体来说,正如你已经发现的,length(及其同义词count)被记录为:

返回序列或映射的项数。

因此,正如你所发现的那样,模板中的\{\{products|count}}(或等价于\{\{products|length}})将给出“产品的数量”(“list的长度”)

Alex的评论看起来不错,但我仍然对使用范围感到困惑。 下面的代码在我使用范围内长度的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 %}

我遇到了一个None长度的问题,这导致内部服务器错误:

我的解决方案只是显示0如果对象是None,并计算其他类型的长度,如列表在我的情况:

\{\{'0' if linked_contacts == None else linked_contacts|length}}

如果使用了带数组的for循环,则可以使用以下方法

{% for i in range(array|length) %}
array[i]
{% endfor %}