过滤器是通过管道符号(|)进行使用的,例如:{{ 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