Я намагаюся зробити це:
{% 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')