Как вы сортируете список в Jinja2?


Я пытаюсь сделать это:

 {% for movie in movie_list | sort(movie.rating) %}

но это не так...документация расплывчата...как вы это делаете в Jinja2?

3 59

3 ответа:

начиная с версии 2.6, встроенный фильтр сортировки Jinja2 позволяет указать атрибут для сортировки по:

{% for movie in movie_list|sort(attribute='rating') %}

см.http://jinja.pocoo.org/docs/templates/#sort

обычно мы сортируем список, прежде чем дать его Jinja2. Нет никакого способа, чтобы указать ключ в .

тем не менее, вы всегда можете попробовать {% 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 для примера.

Если вы хотите сортировать в порядке возрастания

{% for movie in movie_list|sort(attribute='rating') %}

Если вы хотите сортировать в порядке убывания

{% for movie in movie_list|sort(attribute='rating', reverse = True) %}