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

例如,在Python中:

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

在jinja2

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

当前回答

Alex的评论看起来不错,但我仍然对使用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 %}

其他回答

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

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

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

Alex的评论看起来不错,但我仍然对使用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 %}
<span>You have {{products|length}} products</span>

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

{% if products|length > 1 %}

这里记录了Jinja2的内置过滤器;具体来说,正如你已经发现的那样,length(及其同义词count)被记录为:

返回序列或映射的项数。

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

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

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