11_自定义flask_jinja2模板过滤器

Posted nichengshishaonian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于11_自定义flask_jinja2模板过滤器的主要内容,如果未能解决你的问题,请参考以下文章

自定义过滤器及标签

Django 自定义过滤器和模板标签

django 第五课自定义模板过滤器与标签

模板继承and自定义模板标签和过滤器

Django 找不到我的自定义模板过滤器

django模板中的自定义过滤器