python - get_template - jinja2 list
¿Cómo se ordena una lista en Jinja2? (3)
Estoy tratando de hacer esto:
{% for movie in movie_list | sort(movie.rating) %}
Pero eso no está bien ... la documentación es vaga ... ¿cómo haces esto en Jinja2?
A partir de la versión 2.6, el filtro de clasificación integrado de Jinja2 le permite especificar un atributo para ordenar por:
{% for movie in movie_list|sort(attribute=''rating'') %}
Por lo general, ordenamos la lista antes de dársela a Jinja2. No hay forma de especificar una clave en el filtro de sort
de Jinja.
Sin embargo, siempre puedes probar {% 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 y escribir un filtro personalizado para esto. Parece tonto cuando puedes ordenar antes de dar los datos a Jinja2.
Si movie_list
es una lista de objetos, puede definir los diversos 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 calificación debe ser primero. O tendrás que hacer la clasificación fuera de Jinja2.
Si movie_list
es una lista de diccionarios, puede usar dictsort
, que acepta una especificación de clave para la clasificación. Lea esto: http://jinja.pocoo.org/2/documentation/templates#dictsort para ver un ejemplo.
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) %}