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}}
)テンプレートに「製品の数」(「リストの長さ」)が表示されます
アレックスのコメントは良さそうですが、私はまだ範囲の使用に混乱していました。範囲内の長さを使用して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()がありません
私の回避策は、オブジェクトがNoneの場合、0を表示し、私の場合のリストのように、他のタイプの長さを計算することです。
{{'0' if linked_contacts == None else linked_contacts|length}}
配列を含むforループを使用する場合は、次を使用できます
{% for i in range(array|length) %}
array[i]
{% endfor %}