Получить длину списка в шаблоне jinja2

Как получить количество элементов в списке в шаблоне jinja2?

Например, в Python:

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

и в jinja2

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

Ответ 1

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

Вы также можете использовать этот синтаксис в выражениях типа

{% if products|length > 1 %}

jinja2 встроенные фильтры документированы здесь; и, в частности, как вы уже нашли, length (и его синоним count) документируется следующим образом:

Возвращает количество элементов последовательности или отображения.

Итак, как вы уже нашли, {{products|count}} (или эквивалентно {{products|length}}) в вашем шаблоне даст "количество продуктов" ( "длина списка" )

Ответ 2

Комментарий Alex выглядит хорошо, но меня все еще путают с использованием диапазона. Следующие работы работали для меня при работе над условием, использующим длину в пределах диапазона.

{% 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 %}

Ответ 3

У меня возникла проблема с длиной None, что приводит к внутренней ошибке сервера: TypeError: объект типа 'NoneType' не имеет len()

Мой обходной путь просто отображает 0, если объект имеет значение None, и вычисляет длину других типов, например, list в моем случае:

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