Django模板中如何使用filter对数据进行排序

2023-04-08 00:00:00 模板 排序 如何使用

在Django模板中使用filter对数据进行排序,可以使用内置的filter标签和模板语言提供的过滤器函数来实现。具体步骤如下:

  1. 准备数据:先定义一个包含多个对象的变量,例如:
{% with data=[{'name': '张三', 'age': 28}, {'name': '李四', 'age': 25}, {'name': '王五', 'age': 30}] %}
  1. 使用filter标签:在模板中使用filter标签,并指定需要排序的键值对应的过滤器函数(如dictsort、dictsortreversed等)。例如:
{% with sorted_data=data|dictsort:'age' %}

这里使用了dictsort过滤器,将data按照每个字典中的'age'键进行升序排序。

  1. 遍历数据:使用{% for %}标签对已排序的数据进行遍历,例如:
<ul>
{% for item in sorted_data %}
    <li>{{ item.name }}{{ item.age }}岁)</li>
{% endfor %}
</ul>

完整的例子如下:

{% with data=[{'name': '张三', 'age': 28}, {'name': '李四', 'age': 25}, {'name': '王五', 'age': 30}] %}
{% with sorted_data=data|dictsort:'age' %}
<ul>
{% for item in sorted_data %}
    <li>{{ item.name }}{{ item.age }}岁)</li>
{% endfor %}
</ul>
{% endwith %}
{% endwith %}

输出结果为:

- 李四(25岁)
- 张三(28岁)
- 王五(30岁)

如果需要使用字符串进行排序,可以使用dictsortreversed过滤器,将字符串倒序排序。例如:

{% with data=['pidancode.com', '皮蛋编程', 'Django'] %}
{% with sorted_data=data|dictsortreversed %}
<ul>
{% for item in sorted_data %}
    <li>{{ item }}</li>
{% endfor %}
</ul>
{% endwith %}
{% endwith %}

输出结果为:

- 皮蛋编程
- pidancode.com
- Django

相关文章