Tôi đang cố gắng làm điều này:
{% for movie in movie_list | sort(movie.rating) %}
Nhưng điều đó không đúng ... tài liệu mơ hồ ... làm thế nào để bạn làm điều này trong Jinja2?
Tôi đang cố gắng làm điều này:
{% for movie in movie_list | sort(movie.rating) %}
Nhưng điều đó không đúng ... tài liệu mơ hồ ... làm thế nào để bạn làm điều này trong Jinja2?
Câu trả lời:
Kể từ phiên bản 2.6, bộ lọc sắp xếp tích hợp của Jinja2 cho phép bạn chỉ định một thuộc tính để sắp xếp theo:
{% for movie in movie_list|sort(attribute='rating') %}
list_of_tuples|sort(attribute='0')
reverse=True
.
Nếu bạn muốn sắp xếp theo thứ tự tăng dần
{% for movie in movie_list|sort(attribute='rating') %}
Nếu bạn muốn sắp xếp theo thứ tự giảm dần
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
Thông thường chúng tôi sắp xếp danh sách trước khi đưa nó cho Jinja2. Không có cách nào để chỉ định một khóa trong sort
bộ lọc của Jinja .
Tuy nhiên, bạn luôn có thể thử {% for movie in movie_list|sort %}
. Đó là cú pháp. Bạn không được cung cấp bất kỳ loại thông tin quan trọng nào để sắp xếp.
Bạn cũng có thể thử và viết một bộ lọc tùy chỉnh cho việc này. Có vẻ ngớ ngẩn khi bạn có thể sắp xếp trước khi đưa dữ liệu cho Jinja2.
Nếu movie_list
là danh sách các đối tượng, sau đó bạn có thể xác định phương pháp so sánh khác nhau ( __lt__
, __gt__
, vv) cho các lớp của các đối tượng.
Nếu movie_list
là danh sách các bộ giá trị hoặc danh sách, xếp hạng phải được xếp hạng đầu tiên. Hoặc bạn sẽ phải phân loại bên ngoài Jinja2.
Nếu movie_list
là một danh sách các từ điển, thì bạn có thể sử dụng dictsort
, nó chấp nhận một đặc điểm kỹ thuật chính để sắp xếp. Đọc phần này: http://jinja.pocoo.org/2/documentation/templates#dictsort để làm ví dụ.
dict.items()
):sort(attribut='1')