Ich versuche das zu tun:
{% for movie in movie_list | sort(movie.rating) %}
Aber das ist nicht richtig ... die Dokumentation ist vage ... wie macht man das in Jinja2?
Ich versuche das zu tun:
{% for movie in movie_list | sort(movie.rating) %}
Aber das ist nicht richtig ... die Dokumentation ist vage ... wie macht man das in Jinja2?
Antworten:
Ab Version 2.6 können Sie mit dem integrierten Sortierfilter von Jinja2 ein Attribut angeben, nach dem sortiert werden soll:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.
Wenn Sie in aufsteigender Reihenfolge sortieren möchten
{% for movie in movie_list|sort(attribute='rating') %}
Wenn Sie in absteigender Reihenfolge sortieren möchten
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
Normalerweise sortieren wir die Liste, bevor wir sie Jinja2 geben. Es gibt keine Möglichkeit, einen Schlüssel in Jinjas sort
Filter anzugeben .
Sie können es jedoch jederzeit versuchen {% for movie in movie_list|sort %}
. Das ist die Syntax. Sie können keine Schlüsselinformationen für die Sortierung angeben.
Sie können auch versuchen, einen benutzerdefinierten Filter dafür zu schreiben. Scheint albern, wenn Sie sortieren können, bevor Sie die Daten an Jinja2 weitergeben.
Wenn movie_list
eine Liste von Objekten ist, dann können Sie die verschiedenen Vergleichsmethoden (definieren __lt__
, __gt__
usw.) für die Klasse dieser Objekte.
Wenn movie_list
es sich um eine Liste von Tupeln oder Listen handelt, muss die Bewertung an erster Stelle stehen. Oder Sie müssen die Sortierung außerhalb von Jinja2 durchführen.
Wenn movie_list
es sich um eine Liste von Wörterbüchern handelt, können Sie diese verwenden dictsort
, die eine Schlüsselspezifikation für die Sortierung akzeptiert. Lesen Sie dies als Beispiel : http://jinja.pocoo.org/2/documentation/templates#dictsort .
dict.items()
):sort(attribut='1')