Estou tentando fazer isso:
{% for movie in movie_list | sort(movie.rating) %}
Mas isso não está certo ... a documentação é vaga ... como você faz isso no Jinja2?
Estou tentando fazer isso:
{% for movie in movie_list | sort(movie.rating) %}
Mas isso não está certo ... a documentação é vaga ... como você faz isso no Jinja2?
Respostas:
A partir da versão 2.6, o filtro de classificação integrado do Jinja2 permite que você especifique um atributo para classificar:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.
Se você deseja classificar em ordem crescente
{% for movie in movie_list|sort(attribute='rating') %}
Se você deseja classificar em ordem decrescente
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
Normalmente, classificamos a lista antes de entregá-la ao Jinja2. Não há como especificar uma chave no sort
filtro de Jinja .
No entanto, você sempre pode tentar {% for movie in movie_list|sort %}
. Essa é a sintaxe. Você não pode fornecer nenhum tipo de informação chave para a classificação.
Você também pode tentar escrever um filtro personalizado para isso. Parece bobagem quando você pode classificar antes de fornecer os dados ao Jinja2.
Se movie_list
é uma lista de objetos, então você pode definir os vários métodos de comparação ( __lt__
, __gt__
, etc.) para a classe desses objetos.
Se movie_list
for uma lista de tuplas ou listas, a classificação deve ser a primeira. Ou você terá que fazer a classificação fora de Jinja2.
Se movie_list
for uma lista de dicionários, você pode usar o dictsort
, que aceita uma especificação de chave para a classificação. Leia isto: http://jinja.pocoo.org/2/documentation/templates#dictsort para obter um exemplo.
dict.items()
):sort(attribut='1')