Sto provando a fare questo:
{% for movie in movie_list | sort(movie.rating) %}
Ma non è giusto ... la documentazione è vaga ... come si fa in Jinja2?
Sto provando a fare questo:
{% for movie in movie_list | sort(movie.rating) %}
Ma non è giusto ... la documentazione è vaga ... come si fa in Jinja2?
Risposte:
A partire dalla versione 2.6, il filtro di ordinamento integrato di Jinja2 consente di specificare un attributo in base a cui ordinare:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.
Se vuoi ordinare in ordine crescente
{% for movie in movie_list|sort(attribute='rating') %}
Se vuoi ordinare in ordine decrescente
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
Di solito ordiniamo l'elenco prima di darlo a Jinja2. Non c'è modo di specificare una chiave nel sort
filtro di Jinja .
Tuttavia, puoi sempre provare {% for movie in movie_list|sort %}
. Questa è la sintassi. Non puoi fornire alcun tipo di informazione chiave per l'ordinamento.
Puoi anche provare a scrivere un filtro personalizzato per questo. Sembra sciocco quando puoi ordinare prima di dare i dati a Jinja2.
Se movie_list
è un elenco di oggetti, quindi è possibile definire i vari metodi di confronto ( __lt__
, __gt__
, ecc) per la classe di quegli oggetti.
Se movie_list
è un elenco di tuple o elenchi, il punteggio deve essere il primo. Oppure dovrai fare lo smistamento fuori Jinja2.
Se movie_list
è un elenco di dizionari, è possibile utilizzare dictsort
, che accetta una specifica chiave per l'ordinamento. Leggi questo: http://jinja.pocoo.org/2/documentation/templates#dictsort per un esempio.
dict.items()
):sort(attribut='1')