根据按下的字段对Jinja2和Flask的对象列表进行排序

时间:2014-02-24 14:42:16

标签: javascript python sorting flask jinja2

我在Flask中有一个名为Dog的模型,其中包含参数Name,Breed和Age。通过Jinja2,我在模板中显示它们如下:

<table>
<tr>
<td>Name</td>
<td>Breed</td>
<td>Age</td>
</tr>
{% for dog in dogs_list %}
<tr>
<td>{{ dog.name }}</td>
<td>{{ dog.breed }}</td>
<td>{{ dog.age }}</td>
</tr>
{% endfor %}
</table>

我的想法是,如果用户按名称,该表将显示按名称排序的对象。与品种和年龄相同。 Jinja中有一个按参数排序的过滤器,例如“name”:

{% for dog in dogs_list|sort(attribute='name') %}

但我不想提出一个固定的属性,它应该改为“繁殖”或“年龄”。我可以用Jinja2做到吗?我也应该使用Flask吗?我可以使用JavaScript在Jinja2中设置值吗?

谢谢!

1 个答案:

答案 0 :(得分:13)

该属性不需要是固定字符串,也可以是请求参数:

{% set sort_on = request.args.sort_on|default('name') %}
{% for dog in dogs_list|sort(attribute=sort_on) %}

这会查找GET参数sort_on(默认为'name'),然后使用该值对dogs_list进行排序。