jinja2 템플릿에서 목록의 길이 가져 오기


315

jinja2 템플릿의 목록에서 요소 수를 얻으려면 어떻게합니까?

예를 들어, 파이썬에서 :

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

그리고 jinja2에서

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

답변:


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

이 구문을 다음과 같은 표현식에 사용할 수도 있습니다

{% if products|length > 1 %}

jinja2의 내장 필터는 여기 에 문서화되어 있습니다 . 구체적으로, 당신이 이미 발견 length했듯이 (그리고 그 동의어 count)는 다음과 같이 문서화되어 있습니다 :

시퀀스 또는 매핑의 항목 수를 반환합니다.

따라서 다시 한 번 템플릿에서 찾은대로 {{products|count}}(또는 이에 상응하는 {{products|length}}) '제품 수'( '길이')를 제공합니다.


undefined도 확인할 수 있습니까? 피곤하지 않은 {% 제품이 없으면 {% ... ...}을 (를) 사용해야합니다
Nam G VU

@wvxvw이 작업을 수행합니다 : {% set item_count = items | length %}긴만큼 items목록 등 DICT이다
kbolino

7

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

2

길이가 None 인 문제가 발생하여 내부 서버 오류가 발생했습니다. TypeError : 'NoneType'유형의 개체에 len ()이 없습니다.

내 해결 방법은 객체가 없음 인 경우 0을 표시하고 내 경우 목록과 같은 다른 유형의 길이를 계산합니다.

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

none 내장 함수를 사용하여 None 테스트 할 수 있습니다 . 자세한 내용은 https://jinja.palletsprojects.com/en/2.10.x/templates/#none에서 확인 하십시오 . 예이 스레드에 : /programming/19614027/jinja2-template-variable-if-none-object-set-a-default-value
요이치 Jakubas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.