Я пытаюсь это сделать:
{% for movie in movie_list | sort(movie.rating) %}
Но это неправильно ... документация расплывчата ... как это сделать в Jinja2?
Начиная с версии 2.6, встроенный фильтр сортировки Jinja2 позволяет вам указать атрибут для сортировки:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.Если вы хотите отсортировать по возрастанию
{% for movie in movie_list|sort(attribute='rating') %}
Если вы хотите отсортировать по убыванию
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
источник
Обычно мы сортируем список перед тем, как передать его Jinja2. Невозможно указать ключ в
sort
фильтре Jinja .Однако всегда можно попробовать
{% for movie in movie_list|sort %}
. Это синтаксис. Вы не можете предоставить какую-либо ключевую информацию для сортировки.Вы также можете попробовать написать для этого собственный фильтр. Кажется глупым, когда вы можете выполнить сортировку перед передачей данных Jinja2.
Если
movie_list
это список объектов, вы можете определить различные методы сравнения (__lt__
,__gt__
и т. Д.) Для класса этих объектов.Если
movie_list
это список кортежей или списков, рейтинг должен быть первым. Или вам придется выполнять сортировку вне Jinja2.Если
movie_list
это список словарей, то вы можете использоватьdictsort
, который принимает ключевую спецификацию для сортировки. Прочтите это: http://jinja.pocoo.org/2/documentation/templates#dictsort для примера.источник
dict.items()
):sort(attribut='1')