需求场景

过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器。

使用方式:

  • 过滤器的使用方式为:变量名 | 过滤器。

常见内建过滤器

字符串过滤器

  • safe:禁用转义(下一篇进行解释);
    <p>{{ '<em>hello</em>' | safe }}</p>

  • capitalize:把变量值的首字母转成大写,其余字母转小写;
    <p>{{ 'hello' | capitalize }}</p>

  • lower:把值转成小写;
    <p>{{ 'HELLO' | lower }}</p>

  • upper:把值转成大写;
    <p>{{ 'hello' | upper }}</p>

  • title:把值中的每个单词的首字母都转成大写;
    <p>{{ 'hello' | title }}</p>

  • trim:把值的首尾空格去掉;
    <p>{{ ' hello world ' | trim }}</p>

  • reverse:字符串反转;
    <p>{{ 'olleh' | reverse }}</p>

  • format:格式化输出;
    <p>{{ '%s is %d' | format('name',17) }}</p>

链式使用过滤器(也就是一个字符串可以同时使用多个过滤器用符号 '|' 隔开)

  • <p>{{ “ hello world “ | trim | upper }}</p>

     

列表过滤器

  • first:取第一个元素
    <p>{{ [1,2,3,4,5,6] | first }}</p>

  • last:取最后一个元素
    <p>{{ [1,2,3,4,5,6] | last }}</p>

  • length:获取列表长度
    <p>{{ [1,2,3,4,5,6] | length }}</p>

  • sum:列表求和
    <p>{{ [1,2,3,4,5,6] | sum }}</p>

  • sort:列表排序
    <p>{{ [6,2,3,1,5,4] | sort }}</p>

自定义过滤器(自定义的过滤器名称如果和内置的过滤器重名,会覆盖内置的过滤器。)

方式一:通过 add_template_filter (过滤器函数, 模板中使用的过滤器名字)

def do_listreverse(li):
    # 通过原列表创建一个新列表
    temp_li = list(li)
    # 将新列表进行返转
    temp_li.reverse()
    return temp_li

app.add_template_filter(do_listreverse,'lireverse')

模板代码


 方式二:通过装饰器 app.template_filter (模板中使用的装饰器名字)

@app.template_filter('lireverse')
def do_listreverse(li):
    # 通过原列表创建一个新列表
    temp_li = list(li)
    # 将新列表进行返转
    temp_li.reverse()
    return temp_li

 代码实例

 

 flask(15):过滤器解释_转义