Loading

11_自定义flask_jinja2模板过滤器

自定义过滤器

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

过滤器本质上就是一个函数。如果在模板中调用这个过滤器。那么就会将这个变量的值作为第一个参数传递给过滤器这个函数,然后函数的返回值会作为这个过滤器的返回值。

1. 通过add_template_filter(过滤器函数名, 模板中使用的过滤器名字)

...
def filter_double_sort(li):
    """自定义的过滤器函数"""
    return li[::2]    # 如将列表第隔两步取一个数
app.add_template_filter(filter_double_sort, 'li2')
...

2. 通过装饰器: @app.template_filter('过滤器名称')

app.config['TEMPLATES_AUTO_RELOAD'] = True   # 可以设置这个, 模板修改了,也自动加载

@app.template_filter('li3')
def filter_double_sort(li):
    """每隔三步取一个值"""
    return li[::3]

@app.template_filter('cut')
def cut(value):
    """替换字符串中hello为空"""
    value = value.replace('hello', '')
    return value


# 在模板中使用
<p>cut 替换掉里面的hello:{{ 'hello world hello world replace hello replace value world'|cut }}</p>
# 结果为:
cut 替换掉里面的hello:world world replace replace value world

posted @ 2019-10-07 18:54  未来已来,你来不来  阅读(287)  评论(0编辑  收藏  举报