Nic*_*ins 78 python sorting jinja2
我想这样做:
{% for movie in movie_list | sort(movie.rating) %}
Run Code Online (Sandbox Code Playgroud)
但那不对......文档含糊不清......你怎么在Jinja2做到这一点?
Ste*_*e S 143
从版本2.6开始,Jinja2的内置排序过滤器允许您指定要排序的属性:
{% for movie in movie_list|sort(attribute='rating') %}
Run Code Online (Sandbox Code Playgroud)
见http://jinja.pocoo.org/docs/templates/#sort
Sum*_*yan 19
如果要按升序排序
{% for movie in movie_list|sort(attribute='rating') %}
Run Code Online (Sandbox Code Playgroud)
如果要按降序排序
{% for movie in movie_list|sort(attribute='rating', reverse = True) %}
Run Code Online (Sandbox Code Playgroud)
S.L*_*ott 12
通常我们会在将列表提供给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作为示例.