Próbuję to zrobić:
{% for movie in movie_list | sort(movie.rating) %}
Ale to nie w porządku ... dokumentacja jest niejasna ... jak to zrobić w Jinja2?
Próbuję to zrobić:
{% for movie in movie_list | sort(movie.rating) %}
Ale to nie w porządku ... dokumentacja jest niejasna ... jak to zrobić w Jinja2?
Odpowiedzi:
Od wersji 2.6 wbudowany filtr sortowania Jinja2 pozwala określić atrybut do sortowania według:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.
Jeśli chcesz posortować w kolejności rosnącej
{% for movie in movie_list|sort(attribute='rating') %}
Jeśli chcesz posortować w porządku malejącym
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
Zwykle sortujemy listę przed przekazaniem jej Jinja2. Nie ma sposobu, aby określić klucz w sort
filtrze Jinja .
Jednak zawsze możesz spróbować {% for movie in movie_list|sort %}
. Taka jest składnia. Nie możesz podać żadnych kluczowych informacji do sortowania.
Możesz także spróbować napisać niestandardowy filtr. Wydaje się głupie, kiedy można posortować dane przed przekazaniem danych Jinja2.
Jeśli movie_list
jest to lista obiektów, można określić różne metody porównania ( __lt__
, __gt__
etc.) dla klasy tych obiektów.
Jeśli movie_list
jest to lista krotek lub list, ocena musi być pierwsza. Albo będziesz musiał zrobić sortowanie poza Jinja2.
Jeśli movie_list
jest to lista słowników, możesz użyć dictsort
, która akceptuje specyfikację klucza do sortowania. Przeczytaj to: http://jinja.pocoo.org/2/documentation/templates#dictsort jako przykład.
dict.items()
):sort(attribut='1')