【发布时间】:2010-12-29 21:14:36
【问题描述】:
我正在尝试这样做:
{% for movie in movie_list | sort(movie.rating) %}
但这不对...文档含糊不清...您如何在 Jinja2 中做到这一点?
【问题讨论】:
我正在尝试这样做:
{% for movie in movie_list | sort(movie.rating) %}
但这不对...文档含糊不清...您如何在 Jinja2 中做到这一点?
【问题讨论】:
通常我们在将列表提供给 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 为例。
【讨论】:
movie_list = sorted(movie_list, key = lambda movie:movie.rating, reverse = True ) 太糟糕了,让模板决定可能会很好按排序顺序! (其他模板引擎可以这样做吗?)
dict.items()返回):sort(attribut='1')
从 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) %}
【讨论】: