Python_Flask 自定义过滤器

本文介绍了如何在Flask应用中创建自定义模板过滤器。第一种方法是通过调用`app.add_template_filter()`,定义一个函数并将其添加为过滤器。第二种方法使用装饰器`@app.template_filter()`来注册过滤器。示例中展示了替换字符串和反转列表的过滤器,并在模板中使用它们。这两种方法都可以让开发者灵活地扩展模板引擎的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种 通过调用应用程序实例的 add_template_filter

from flask import Flask, render_template
import settings

app = Flask(__name__)
app.config.from_object(settings)


@app.route('/')
def hello_world():  # put application's code here
    msg = 'hello every hello world.'
    return render_template('show.html', msg=msg)


# 过滤器本质也是函数

# 第一种方式
def replace_hello(value):
    print('--------->', value)
    value = value.replace('hello', '')
    print('=======>', value)
    return value.strip()  # 将替换的结果返回


app.add_template_filter(replace_hello, 'replace')

if __name__ == '__main__':
    app.run()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义过滤器</title>
</head>
<body>
{{ msg }}
<hr>
{{ msg|replace }}
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第二种 使用装饰器完成

在这里插入图片描述

from flask import Flask, render_template
import settings

app = Flask(__name__)
app.config.from_object(settings)


@app.route('/')
def hello_world():  # put application's code here
    msg = 'hello every hello world.'
    li = [3,9,6,0,5,5,1]
    return render_template('show.html', msg=msg,li=li)


# 过滤器本质也是函数

# 第一种方式
def replace_hello(value):
    print('--------->', value)
    value = value.replace('hello', '')
    print('=======>', value)
    return value.strip()  # 将替换的结果返回


app.add_template_filter(replace_hello, 'replace')


#   第二种方式 装饰器
@app.template_filter('listreverse') #跟route很像

def reverse_list(li):
    temp_li = list(li)
    temp_li.reverse()
    return temp_li


if __name__ == '__main__':
    app.run()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>自定义过滤器</title>
</head>
<body>
{{ msg }}
<hr>
{{ msg|replace }}
<hr>
{{ li }}
<hr>
{{ li|listreverse }}
</body>
</html>
# -*- codeing = utf-8 -*-
# @Time : 2021/8/20 10:28
# @Author : 二帆
# @File : settings.py
# @Software : PyCharm

ENV = 'development'
DEBUG = True

在这里插入图片描述

总结

1.通过flask模块中的add_template_filter 方法
步骤:
a.定义函数,带有参数和返回值
b.添加过滤器 app.add_template_filter(function,name=’’)
c.在模板中使用:{{变量 | 自定义过滤器}}
2.使用装饰器完成
a.定义函数,带有参数和返回值
b.通过装饰器完成,@app.template_filter(‘过滤器名字’)装饰
c.在模板中使用:{{变量 | 自定义过滤器}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值