Come posso ottenere il numero di elementi in un elenco nel modello jinja2?
Ad esempio, in Python:
print(template.render(products=[???]))
e in jinja2
<span>You have {{what goes here?}} products</span>
Come posso ottenere il numero di elementi in un elenco nel modello jinja2?
Ad esempio, in Python:
print(template.render(products=[???]))
e in jinja2
<span>You have {{what goes here?}} products</span>
Risposte:
<span>You have {{products|length}} products</span>
Puoi anche usare questa sintassi in espressioni come
{% if products|length > 1 %}
I filtri integrati di jinja2 sono documentati qui ; e in particolare, come hai già trovato, length
(e il suo sinonimo count
) è documentato a:
Restituisce il numero di elementi di una sequenza o mappatura.
Quindi, di nuovo come hai trovato, {{products|count}}
(o equivalentemente {{products|length}}
) nel tuo modello fornirà il "numero di prodotti" ("lunghezza dell'elenco")
{% set item_count = items | length %}
fintanto che items
è un elenco, dict, ecc
Il commento di Alex sembra buono ma ero ancora confuso con l'utilizzo di range. Quanto segue ha funzionato per me mentre lavoravo su una condizione for usando la lunghezza nel raggio d'azione.
{% 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 %}
Ho riscontrato un problema con la lunghezza di None, che porta all'errore interno del server: TypeError: l'oggetto di tipo 'NoneType' non ha len ()
La mia soluzione alternativa è solo visualizzare 0 se l'oggetto è Nessuno e calcolare la lunghezza di altri tipi, come l'elenco nel mio caso:
{{'0' if linked_contacts == None else linked_contacts|length}}