我如何在jinj2模板中获得列表中的元素数量?
例如,在Python中:
print(template.render(products=[???]))
在jinja2
<span>You have {{what goes here?}} products</span>
我如何在jinj2模板中获得列表中的元素数量?
例如,在Python中:
print(template.render(products=[???]))
在jinja2
<span>You have {{what goes here?}} products</span>
当前回答
如果使用了带数组的for循环,则可以使用以下方法
{% for i in range(array|length) %}
array[i]
{% endfor %}
其他回答
我遇到了一个None长度的问题,这导致内部服务器错误:
我的解决方案只是显示0如果对象是None,并计算其他类型的长度,如列表在我的情况:
{{'0' if linked_contacts == None else linked_contacts|length}}
<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 %}
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 %}