J'essaye de faire ceci:
{% for movie in movie_list | sort(movie.rating) %}
Mais ce n'est pas vrai ... la documentation est vague ... comment faites-vous cela dans Jinja2?
J'essaye de faire ceci:
{% for movie in movie_list | sort(movie.rating) %}
Mais ce n'est pas vrai ... la documentation est vague ... comment faites-vous cela dans Jinja2?
Réponses:
Depuis la version 2.6, le filtre de tri intégré de Jinja2 vous permet de spécifier un attribut à trier:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.
Si vous souhaitez trier par ordre croissant
{% for movie in movie_list|sort(attribute='rating') %}
Si vous souhaitez trier par ordre décroissant
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
Habituellement, nous trions la liste avant de la donner à Jinja2. Il n'y a aucun moyen de spécifier une clé dans le sort
filtre de Jinja .
Cependant, vous pouvez toujours essayer {% for movie in movie_list|sort %}
. Voilà la syntaxe. Vous ne pouvez fournir aucune information clé pour le tri.
Vous pouvez également essayer d'écrire un filtre personnalisé pour cela. Cela semble idiot quand vous pouvez trier avant de donner les données à Jinja2.
Si movie_list
une liste d'objets, vous pouvez définir les différentes méthodes de comparaison ( __lt__
, __gt__
, etc.) pour la classe de ces objets.
S'il movie_list
s'agit d'une liste de tuples ou de listes, la note doit être la première. Ou vous devrez faire le tri en dehors de Jinja2.
Si movie_list
est une liste de dictionnaires, vous pouvez utiliser dictsort
, qui accepte une spécification de clé pour le tri. Lisez ceci: http://jinja.pocoo.org/2/documentation/templates#dictsort pour un exemple.
dict.items()
):sort(attribut='1')