Jak uzyskać liczbę elementów na liście w szablonie jinja2?
Na przykład w Pythonie:
print(template.render(products=[???]))
i w jinja2
<span>You have {{what goes here?}} products</span>
Jak uzyskać liczbę elementów na liście w szablonie jinja2?
Na przykład w Pythonie:
print(template.render(products=[???]))
i w jinja2
<span>You have {{what goes here?}} products</span>
Odpowiedzi:
<span>You have {{products|length}} products</span>
Możesz również użyć tej składni w wyrażeniach takich jak
{% if products|length > 1 %}
Wbudowane filtry jinja2 są udokumentowane tutaj ; a konkretnie, jak już odkryłeś, length
(i jego synonim count
) jest udokumentowany:
Zwraca liczbę elementów sekwencji lub mapowania.
Tak więc, jak już znalazłeś {{products|count}}
(lub równoważnie {{products|length}}
) w swoim szablonie podasz „liczbę produktów” („długość listy”)
{% set item_count = items | length %}
tak długo jak items
jest lista,
Komentarz Alexa wygląda dobrze, ale nadal byłem mylony z używaniem zasięgu. Poniższe działało dla mnie podczas pracy nad warunkiem przy użyciu długości w zakresie.
{% 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 %}
Wystąpił problem z długością None, który prowadzi do wewnętrznego błędu serwera: TypeError: obiekt typu „NoneType” nie ma len ()
Moje obejście wyświetla tylko 0, jeśli obiektem jest Brak i obliczam długość innych typów, takich jak lista w moim przypadku:
{{'0' if linked_contacts == None else linked_contacts|length}}