Я намагаюся зробити це:
{% for movie in movie_list | sort(movie.rating) %}
Але це не так ... документація розпливчаста ... як це зробити в Jinja2?
Я намагаюся зробити це:
{% 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')