Bir jinja2 şablonunda bir listenin uzunluklarını alın


315

Jinja2 şablonundaki bir listedeki elemanların sayısını nasıl alabilirim?

Örneğin, Python'da:

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

ve jinja2'de

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

Yanıtlar:


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

Bu sözdizimini aşağıdaki gibi ifadelerde de kullanabilirsiniz

{% if products|length > 1 %}

jinja2'nin yerleşik filtreleri burada belgelenmiştir ; ve özellikle, daha önce bulduğunuz gibi length(ve eşanlamlısı count) aşağıdakilere belgelenmiştir:

Bir dizinin veya eşlemenin öğe sayısını döndürür.

Dolayısıyla, yine bulduğunuz gibi {{products|count}}(veya eşdeğer olarak {{products|length}}) şablonunuzda "ürün sayısı" ("liste uzunluğu")


Tanımsız olup olmadığını da kontrol edebilir miyiz? Ürünler% {% ise, oldukça yorucu ise% kullanmalıyım
Nam G VU

@wvxvw bu işe yarıyor: bir liste, dict vb. {% set item_count = items | length %}olduğu süreceitems
kbolino

7

Alex'in yorumu iyi görünüyor, ancak aralığı kullanmakla hala kafam karışmıştı. Aşağıdaki menzil içinde uzunluk kullanarak bir koşul için çalışırken benim için çalıştı.

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

Dahili Sunucu Hatası yol açar Hiçbiri, uzunluğu ile ilgili bir sorun yaşadım: TypeError: 'NoneType' türünde nesne len () yok

Nesne Yok ise geçici çözümüm yalnızca 0 görüntülüyor ve benim durumumdaki liste gibi diğer türlerin uzunluğunu hesaplıyor:

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

Sen kullanabilirsiniz hiçbiri için teste fonksiyonunda yapı- Hiçbiri . Buradan daha fazla bilgi edinin: https://jinja.palletsprojects.com/en/2.10.x/templates/#none . Bu konuda örnek: /programming/19614027/jinja2-template-variable-if-none-object-set-a-default-value
Wojciech Jakubas 17:50
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.