Вопрос

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

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

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

и в jinja2

<span>You have {{what goes here?}} products</span>
Это было полезно?

Решение

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

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

{% if products|length > 1 %}

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

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

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

Другие советы

Комментарий Алекса выглядит неплохо, но я все еще был сбит с толку использованием 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, которая приводит к внутренней ошибке сервера:Ошибка типа:объект типа 'NoneType' не имеет функции len()

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

{{'0' if linked_contacts == None else linked_contacts|length}}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top