Estoy tratando de hacer esto:
{% for movie in movie_list | sort(movie.rating) %}
Pero eso no es correcto ... la documentación es vaga ... ¿cómo se hace esto en Jinja2?
Estoy tratando de hacer esto:
{% for movie in movie_list | sort(movie.rating) %}
Pero eso no es correcto ... la documentación es vaga ... ¿cómo se hace esto en Jinja2?
Respuestas:
A partir de la versión 2.6, el filtro de clasificación integrado de Jinja2 le permite especificar un atributo para ordenar:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.
Si desea ordenar en orden ascendente
{% for movie in movie_list|sort(attribute='rating') %}
Si desea ordenar en orden descendente
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
Normalmente ordenamos la lista antes de dársela a Jinja2. No hay forma de especificar una clave en el sort
filtro de Jinja .
Sin embargo, siempre puedes intentarlo {% for movie in movie_list|sort %}
. Esa es la sintaxis. No puede proporcionar ningún tipo de información clave para la clasificación.
También puede intentar escribir un filtro personalizado para esto. Parece una tontería cuando puedes ordenar antes de darle los datos a Jinja2.
Si movie_list
es una lista de objetos, a continuación, se pueden definir los diferentes métodos de comparación ( __lt__
, __gt__
, etc.) para la clase de esos objetos.
Si movie_list
es una lista de tuplas o listas, la clasificación debe ser la primera. O tendrás que hacer la clasificación fuera de Jinja2.
Si movie_list
es una lista de diccionarios, entonces puede usar dictsort
, que acepta una especificación clave para la clasificación. Lea esto: http://jinja.pocoo.org/2/documentation/templates#dictsort para ver un ejemplo.
dict.items()
):sort(attribut='1')