在Django的模板语言中,都是通过使用"过滤器"来改变变量的显示
过滤器基本语法:{{ value|filter_name:参数 }}
ps:过滤器只能传入两个参数: value 参数,参数非必填,value必填
过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入
django内置有60多个过滤器,下面简单描述下常用的过滤器使用
统计过滤器长度:{{ s|length }}
eg:倘如s=[1,2,3,6],那么返回的结果则为4
设置默认值:{{ s|default:"默认值" }}
eg:第一个参数(s)是True的话就展示第一个参数实际值,否则就展示冒号后面的默认值
获取文件大小:{{ file_size|filesizeformat }}
eg:倘若file_size为10M,那么就返回10M
日期格式化:{{time|date:"Y-m-d H:i:s"}}
返回指定格式日期 ,eg:**2021-01-30 10:19:50**
切片操作(支持步长):{{ li|slice:"0:4:2" }}
0是开始位置(下标) 4是结束位置 2是步长
切取字符(包含三个点):{{ s|truncatechars:9 }}
获取字符串s前6(9减去3个点等于6)个参数,
eg:
s = hellofer
返回:hellof...
切取单词(不包含三个点,根据空格切):{{ word|reuncatewords:2 }}
获取word语句中前两个单词
eg:
word = "hello1 hello2 hello3 hello4 hello5"
返回:hello1 hello2 ...
移除特定字符:{{ msg|cut:"hello" }} hello为特定字符
相当于将msg里面的特定字符全部删除
eg:
msg = "hello1 hello2 hello3 hello4 hello5"
返回:1 2 3 4 5
拼接操作:{{ li|join:"~" }} li必须是个可迭代对象
循环li,将所有参数用~拼接起来
eg:
li = [11,22,33,44]
返回:11~22~33~44
拼接操作(加法):{{ data|add:10 }}
将data与10想加,data与10必须同一个类型才行,例如必须都是整形或者字符串
eg:
{{data:add|10}} data=100
返回:110
{{data:add|"fer"}} data="hello"
返回:hellofer
转义:{{ data|safe }}
识别data里面的表达式,例如html标签
eg:
ht = "<h1>hello ferh1>"
正常填写{{ht}} 返回的是<h1>hello ferh1> 不会识别到h1标签
添加safe过滤器之后 {{ht|safe}}
返回 hello fer (识别了h1标签,返回了最大号字体)
转义除了前端模板语法可以操作,后端django内部也可以进行操作
from django.utils.safestring import mark_safe
"""
有些前端不好操作的数据,这里就可以通过mark_safe在后端进行操作返回了
"""
mark_safe("hello fer
")