Django 基础教程

Django 查询

Django 展示数据

Django Admin

Django 模板

Django 表单组件

Django 高级

Django FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/django-template-filter.html

Django 模版过滤器详解


在 Django 中,模板过滤器是一种用于对模板变量进行处理和格式化的工具。过滤器允许你在模板中对变量进行修改,从而在渲染过程中实现一些常见的操作,如字符串格式化、日期处理、数据筛选等。过滤器通过 | 符号附加在变量后面,具有一定的语法结构,用于传递变量并执行特定的操作。

语法

在模板中使用过滤器的语法为:

{{ variable|filter }}

用法和作用

  1. 格式化数据: 过滤器用于对模板变量进行格式化,如将日期格式化、字符串转换为大写或小写、数值格式化等。
  2. 数据筛选: 可以使用过滤器对数据进行筛选,例如截取字符串、获取列表的某个元素、移除HTML标签等。
  3. 数据转换: 可以将数据转换成其他数据类型,如将字符串转换为整数、将浮点数保留指定小数位等。

使用场景

过滤器在 Django 模板中非常常见,常用于以下场景:

  • 格式化显示日期和时间
  • 处理文本内容,如截断文本、转换大小写等
  • 数字格式化显示
  • 数据筛选和操作

常用过滤器

下面列举一些常见的 Django 过滤器,并结合详细的代码示例进行叙述:

date

date:格式化日期。

<!-- 在 models.py 中定义一个日期字段:pub_date = models.DateTimeField(auto_now_add=True) -->
<!-- 在模板中使用过滤器显示格式化后的日期 -->
{{ object.pub_date|date:"Y-m-d" }}
<!-- 示例结果:2023-07-27 -->

lower 和 upper

转换字符串为小写和大写。

<!-- 假设 context 中有一个变量 message = "Hello, Django!" -->
<!-- 使用 lower 过滤器将字符串转换为小写 -->
{{ message|lower }}
<!-- 示例结果:hello, django! -->
<!-- 使用 upper 过滤器将字符串转换为大写 -->
{{ message|upper }}
<!-- 示例结果:HELLO, DJANGO! -->

length

获取列表或字符串的长度。

<!-- 假设 context 中有一个变量 my_list = [1, 2, 3, 4, 5] -->
<!-- 使用 length 过滤器获取列表的长度 -->
{{ my_list|length }}
<!-- 示例结果:5 -->

slice

切片操作,截取列表或字符串的一部分。

<!-- 假设 context 中有一个变量 my_list = [1, 2, 3, 4, 5] -->
<!-- 使用 slice 过滤器截取列表的前三个元素 -->
{{ my_list|slice:":3" }}
<!-- 示例结果:[1, 2, 3] -->

<!-- 假设 context 中有一个变量 my_string = "Hello, Django!" -->
<!-- 使用 slice 过滤器截取字符串的前五个字符 -->
{{ my_string|slice:":5" }}
<!-- 示例结果:Hello -->

default

设置默认值。

<!-- 假设 context 中有一个变量 username,但该变量可能未定义 -->
<!-- 使用 default 过滤器设置默认值 -->
{{ username|default:"Guest" }}
<!-- 如果 username 存在,则输出其值;如果 username 不存在,则输出默认值 "Guest" -->

join

将列表转换为字符串,并用指定的字符连接各元素。

<!-- 假设 context 中有一个变量 my_list = ["apple", "banana", "orange"] -->
<!-- 使用 join 过滤器将列表转换为字符串,并用逗号连接各元素 -->
{{ my_list|join:", " }}
<!-- 示例结果:apple, banana, orange -->

全部模板过滤器

上面列出的只是一部分常见的 Django 过滤器,实际上 Django 还提供了许多其他有用的过滤器供开发者使用。在使用过滤器时,建议查阅 Django 官方文档以及相关的第三方包文档,以充分了解过滤器的功能和用法。

以下列出了全部的模板过滤器:

过滤器 作用
add 对数据进行加法运算。
addslashes 添加反斜杠在特定字符前面。
capfirst 字符串的第一个字符转换为大写。
center 字符串居中对齐。
cut 从字符串中删除指定的子字符串。
date 格式化日期和时间对象。
default 设置一个默认值。
default_if_none 变量不存在时提供一个默认值。
dictsort 按照字典的键或值对一个字典进行排序。
dictsortreversed 按照键值逆序排列。
divisibleby 按照键值逆序排列。
escape 安全地显示用户提供的数据。
escapejs 对 JavaScript 代码进行转义。
filesizeformat 格式化文件大小。
first 获取第一个元素。
floatformat 格式化浮点数。
force_escape 强制转义。
get_digit 从给定的整数中获取指定位置上的数字。
iriencode 转换特殊字符和空格。
join 连接元素成字符串。
json_script 嵌入脚本。
last 返回一个可迭代对象的最后一个元素。
length 获取变量的长度或者元素数量。
length_is 判断对象的长度是否等于指定值。
linebreaks 处理换行符。
linebreaksbr 换行符转换。
linenumbers 添加行号。
ljust 对字符串进行格式化。
lower 字符串转换为小写形式。
make_list 将字符串转换为列表。
phone2numeric 将电话号码中的字母转换成对应的数字。
pluralize 根据数量的不同选择正确的单复数形式。
pprint 美化输出数据。
random 随机选择列表中的元素。
rjust 字符串向右对齐。django-template-filter-capfirst.html
safe 安全设置。
safeseq 列表元组等集合类型安全设置。
slice 列表字符串切片。
slugify 文本转换为适合在 URL 中使用的 slug 形式。
stringformat 对变量格式化处理。
striptags 显示纯文本内容。
time 改变时间的显示方式。
timesince 显示时间距离当前时间的相对时间。
timeuntil 计算给定日期或时间与当前时间之间的时间差。
title 字符串每个单词的首字母变为大写。
truncatechars 截断字符串并添加省略号。
truncatechars_html 截断包含 HTML 标签的文本内容。
truncatewords 文本截断。
truncatewords_html 在 HTML 文本中截取一定数量的单词。
unordered_list 列表渲染成无序列表。
upper 字符串转换为大写形式。
urlencode 对 URL 中的参数进行编码。
urlize 将文本中的 URLs(网址)转换为可点击的链接。
urlizetrunc 包含 URL 的文本进行截断和格式化。
wordcount 计算字符串中包含的单词数量。
wordwrap 自动将长文本进行换行处理。
yesno 根据布尔值显示自定义的字符串。
i18n 处理国际化内容。
l10n 处理本地化内容。
tz 处理与时区相关的操作。