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>
<span>You have {{products|length}} products</span>
Você também pode usar esta sintaxe em expressões como
{% if products|length > 1 %}
Os filtros internos 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, você fornecerá o "número de produtos" ("comprimento da lista")
{% set item_count = items | length %}
contanto queitems
é uma lista, dict, etc.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 for usando comprimento dentro do alcance.
fonte
Ocorreu um problema com o comprimento de None, que leva ao erro interno do servidor: TypeError: o objeto do tipo 'NoneType' não possui len ()
Minha solução alternativa é apenas exibir 0 se o objeto for None e calcular o comprimento de outros tipos, como lista no meu caso:
fonte