过滤器的本质是函数。当模板内置的过滤器不能满足需求,可以自定义过滤器。自定义过滤器有两种实现方式:
- 一种是通过Flask应用对象的 add_template_filter 方法
- 通过装饰器来实现自定义过滤器
重要:自定义的过滤器名称如果和内置的过滤器重名,会覆盖内置的过滤器。
方式一
def do_filterdoublesort(ls): #自定义一个方法 return ls[::2] app.add_template_filter(do_filterdoublesort,'db2') 讲我们自定的方法注册在add_template_filter中,第二个参数是 使用自定义过滤器的别名
方式二
@app.template_filter('db2') #在装饰器工厂中给自定义的过滤器取名 def do_filterdoublesort(ls): #会自动注册 return ls[::-2]