共计 1612 个字符,预计需要花费 5 分钟才能阅读完成。
一、概述
过滤器是通过管道符号(|
)进行使用的,例如:{{name|length}}
,将返回 name 的长度。过滤器相当于是一个函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中
二、内置过滤器
-
abs(value)
:返回一个数值的绝对值。示例:
{{-1|abs}}
-
default(value,default_value,boolean=false)
如果当前变量没有值,则会使用参数中的值来代替示例:
name|default('lucky')
如果 name 不存在,则会使用xiaotuo
来替代boolean=False
默认是在只有这个变量为undefined
的时候才会使用default
中的值,如果想使用python
的形式判断是否为false
,则可以传递boolean=true
return render_template('index.html',var=False) {{var|default('lucky')}} # 显示为 False 因为只有值为 undefined 才会执行 lucky {{var|default('a',boolean=True)}} # 此刻为 lucky
-
escape(value)或 e
转义字符,会将<
、>
等符号转义成 HTML 中的符号示例:
content|escape
或content|e
。 -
first(value)
返回一个序列的第一个元素示例:
names|first
-
last(value)
返回一个序列的最后一个元素示例:
names|last
-
format(value,*arags,**kwargs)
格式化字符串示例:
{{'我叫:%s 我今年 %d 岁了 我的存款是 %.2f 元'|format('lucky', 18, 12.5)}}
-
length(value)
返回一个序列或者字典的长度示例:
names|length
-
join(value,d=u'')
将一个序列用d
这个参数的值拼接成字符串{{['1','2']|join('-')}}
-
safe(value)
如果开启了全局转义,那么safe
过滤器会将变量关掉转义示例:
content_html|safe
-
int(value)
:将值转换为int
类型 -
float(value)
:将值转换为float
类型 -
string(value)
将变量转换成字符串 -
list(value)
将变量转换成列表 -
lower(value)
:将字符串转换为小写 -
upper(value)
:将字符串转换为小写 -
replace(value,old,new)
:替换将old
替换为new
的字符串 -
truncate(value,length=255,killwords=False)
截取length
长度的字符串 -
striptags(value)
删除字符串中所有的 HTML 标签,如果出现多个空格,将替换成一个空格 -
trim
截取字符串前面和后面的空白字符 -
wordcount(s)
计算一个长字符串中单词的个数
注意
使用’|’ 将变量与函数分开,左边是变量名,右边是函数名
三、自定义过滤器
-
方式一
通过 Flask 应用对象的 add_template_filter 方法
# 写一个实现 字符超出 5 个 显示... def show_ellipsis(Str,length=5): if(len(Str))>length: Str = Str[0:length]+'...' return Str # 可以给过滤器器一个名字,如果没有,默认就是函数的名字 app.add_template_filter(show_ellipsis,'show_ellipsis')
-
方式二
通过装饰器来实现自定义过滤器
# 如果不传入参数,默认过滤器名字就是函数的名字 @app.template_filter() def show_ellipsis(Str,length=5): if(len(Str))>length: Str = Str[0:length]+'...' return Str