Pergunta

Como obtenho o número de elementos em uma lista no modelo Jinja2?

Por exemplo, em Python:

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

e em Jinja2

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

Solução

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

Você também pode usar essa sintaxe em expressões como

{% if products|length > 1 %}

Os filtros embutidos do Jinja2 estão documentados aqui; e especificamente, como você já encontrou, length (e seu sinônimo count) está documentado para:

Retorne o número de itens de uma sequência ou mapeamento.

Então, novamente como você encontrou, {{products|count}} (ou equivalente {{products|length}}) em seu modelo fornecerá o "número de produtos" ("comprimento da lista")

Outras dicas

O comentário de Alex parece bom, mas eu ainda estava confuso com o uso do alcance. O seguinte funcionou para mim enquanto trabalhava em uma condição para o comprimento do alcance.

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

Eu experimentei um problema com o comprimento de nenhum, o que leva ao erro interno do servidor: TypeError: Objeto do tipo 'NonType' não tem Len ()

Minha solução alternativa está apenas exibindo 0 se o objeto não for e calcular a duração de outros tipos, como a lista no meu caso:

{{'0' if linked_contacts == None else linked_contacts|length}}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top