Как получить количество элементов в списке в шаблоне jinja2?
Например, в Python:
print(template.render(products=[???]))
и в jinja2
<span>You have {{what goes here?}} products</span>
Как получить количество элементов в списке в шаблоне 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}}
) в вашем шаблоне будет указано «количество продуктов» («длина списка»)
{% set item_count = items | length %}
пока items
список,
Комментарий Алекса выглядит хорошо, но я все еще не понял, как использовать диапазон. Следующее сработало для меня, работая над условием 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, которая приводит к внутренней ошибке сервера: TypeError: объект типа 'NoneType' не имеет len ()
Мой обходной путь просто отображает 0, если object имеет значение None, и вычисляет длину других типов, как list в моем случае
{{'0' if linked_contacts == None else linked_contacts|length}}