其他分享
首页 > 其他分享> > 17、Falsk装饰器

17、Falsk装饰器

作者:互联网

装饰器的定义和基本使用

from flask import Flask  # 导入Flask模块

app = Flask(__name__)  # Flask初始化

# 主页,显示 Hello World
@app.route("/")  # 定义路由
def hello_world():  # 定义函数
    return "Hello World!"  # 返回值


# 1、定义装饰器
def user_login(func):  # 定义函数,使用func接收函数作为参数
    def inner():  # 定义inner()函数
        print("登录操作")  # 打印到终端输出
        func()  # 执行func函数

    return inner  # 返回inner函数,不是返回函数的结果


# 2、使用装饰器
@user_login
def news():  # news 函数作为装饰器的输入
    print("这是新闻详情页")  # 打印到终端输出


# 3、调用news,将回溯到装饰器函数。最终打印 "登录操作\n这是新闻详情页"
news()


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

对带参数的函数使用装饰器

from flask import Flask  # 导入Flask模块
from functools import wraps  # 导入相应模块

app = Flask(__name__)  # Flask初始化

# 主页
@app.route("/")  # 定义路由
def hello_world():  # 定义视图函数
    return "Hello World!"  # 返回值


# 1、定义装饰器
def user_login(func):  # 定义函数user_login
    @wraps(func)  # 使用functools.wraps在装饰器的函数上,把传进来的函数进行包裹
    def inner(*args, **kwargs):  # 定义内部函数inner
        print("登录操作!")  # 打印输出
        func(*args, **kwargs)

    return inner  # 返回inner


# 2、使用无参数的装饰器
@user_login  # 使用装饰器
def news():  # 定义函数news()
    print(news.__name__)  # 打印输出此时的函数名称为 news
    print("这是新闻详情页!")  # 打印输出


# 调用函数news(),然后向上回溯到装饰器函数
news()

# 3、使用有参数的装饰器
@user_login  # 使用装饰器
def news_list(*args):  # 定义函数news_list
    page = args[0]  # 元祖args[0]赋值给page
    print(news_list.__name__)  # 打印输出函数名为 news_list
    print("这是新闻列表页的第" + str(page) + "页!")  # 打印输出


# 调用函数news_list,然后向上回溯到装饰器函数
news_list(5)
if __name__ == "__main__":  # 当模块被直接运行时,代码将被运行,当模块是被导入时,代码不被执行
    app.run()

参考资料

https://weread.qq.com/web/reader/0a932660718ac6bc0a9702e

标签:__,函数,17,Flask,Falsk,news,装饰,def
来源: https://www.cnblogs.com/tiansz/p/16341148.html