[python] Jinja2에서 목록을 어떻게 정렬합니까?

나는 이것을 시도하고있다 :

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

하지만 그건 옳지 않습니다 … 문서가 모호합니다 … 진자 2에서 어떻게 이걸하나요?



답변

버전 2.6부터 Jinja2의 내장 정렬 필터를 사용하면 정렬 기준으로 속성을 지정할 수 있습니다.

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

http://jinja.pocoo.org/docs/templates/#sort 참조


답변

오름차순으로 정렬하려면

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

내림차순으로 정렬하려면

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


답변

보통 우리는 Jinja2에게주기 전에 목록을 정렬합니다. Jinja의 키를 지정할 수있는 방법은 없습니다.sort 필터에 .

그러나 항상 시도 할 수 있습니다. {% 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 를 읽어보십시오 .


답변