我正在尝试这样做:
{% for movie in movie_list | sort(movie.rating) %}
但这不对...文档模糊不清...您如何在Jinja2中做到这一点?
Answers:
从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之前对其进行排序。无法在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。