共计 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=truereturn 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






