过滤器是通过管道符号(|
)进行使用的,例如:{{ 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
<span class="hljs-keyword">return</span> render_template(<span class="hljs-string">'index.html'</span>,var=<span class="hljs-keyword">False</span>)
{{var|default(<span class="hljs-string">'lucky'</span>)}} <span class="hljs-comment"># 显示为 False 因为只有值为undefined才会执行lucky</span>
{{var|default(<span class="hljs-string">'a'</span>,boolean=<span class="hljs-keyword">True</span>)}} <span class="hljs-comment">#此刻为 lucky</span>
escape(value)或e
转义字符,会将<
、>
等符号转义成HTML中的符号
示例:content|escape
或content|e
。
first(value)
返回一个序列的第一个元素
示例:names|first
last(value)
返回一个序列的最后一个元素
示例:names|last
format(value,*arags,**kwargs)
格式化字符串
示例:
{{<span class="hljs-string">'我叫:%s 我今年%d岁了 我的存款是 %.2f 元'</span>|format(<span class="hljs-string">'lucky'</span>, <span class="hljs-number">18</span>, <span class="hljs-number">12.5</span>)}}
length(value)
返回一个序列或者字典的长度
示例:names|length
join(value,d=u'')
将一个序列用d
这个参数的值拼接成字符串
{{[<span class="hljs-string">'1'</span>,<span class="hljs-string">'2'</span>]|join(<span class="hljs-string">'-'</span>)}}
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方法
<span class="hljs-comment"># 写一个实现 字符超出5个 显示...</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">show_ellipsis</span><span class="hljs-params">(Str,length=<span class="hljs-number">5</span>)</span>:</span>
<span class="hljs-keyword">if</span>(len(Str))>length:
Str = Str[<span class="hljs-number">0</span>:length]+<span class="hljs-string">'...'</span>
<span class="hljs-keyword">return</span> Str
<span class="hljs-comment"># 可以给过滤器器一个名字,如果没有,默认就是函数的名字</span>
app.add_template_filter(show_ellipsis,<span class="hljs-string">'show_ellipsis'</span>)
方式二
通过装饰器来实现自定义过滤器
<span class="hljs-comment"># 如果不传入参数,默认过滤器名字就是函数的名字 </span>
<span class="hljs-meta">@app.template_filter()</span>
<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">show_ellipsis</span><span class="hljs-params">(Str,length=<span class="hljs-number">5</span>)</span>:</span>
<span class="hljs-keyword">if</span>(len(Str))>length:
Str = Str[<span class="hljs-number">0</span>:length]+<span class="hljs-string">'...'</span>
<span class="hljs-keyword">return</span> Str