Django模板语法之过滤器Filters

Django模板语法之过滤器Filters

在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

"
)

你可能感兴趣的:(Django,python,django,filters,过滤器,django过滤器)