Flask中如何使用请求钩子访问g对象?

2026-05-24 18:511阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计677个文字,预计阅读时间需要3分钟。

Flask中如何使用请求钩子访问g对象?

请使用装饰器以装饰器方式实现请求钩子,Flask支持以下四种请求钩子:

- @app.before_first_request:程序第一次请求前执行- @app.before_request:每次请求前执行- @app.after_request:请求后执行- @app.teardown_request:请求结束后执行

请求钩子是通过装饰器方式实现的,flask支持四种请求钩子

@app.before_first_request 程序第一次请求前执行

@app.before_request 每次程序请求前执行

@app.after_request 程序运行之后执行,前提是程序无报错

Flask中如何使用请求钩子访问g对象?

@app.teardown_request 程序运行之后执行,不管报不报错都执行

视图函数名可以随便起的。

from flask import Flask , request

app = Flask(__name__)

@app.route("/index")
def index():
print("index被执行")
return "dj"

@app.before_first_request
def handle_before_first_request():
"""在程序第一次请求前执行"""
print("before_first_request被执行")

@app.before_request
def handle_before_request():
"""每次程序请求前执行"""
print("before_request被执行")

@app.after_request
def handle_after_request(response):
"""程序请求结束执行,前提是程序无异常"""
print("after_request被执行")
return response

@app.teardown_request
def handle_teardown_request(response):
"""
在每次请求(视图函数处理之后)都被执行,无论视图函数是否出现异常,都被执行
工作在非调试模式时,debug=False
"""
print("handle_teardown_request被执行")
return response

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

第一次执行的结果

第二次执行的结果



上下文对象

g对象方法

from flask import Flask , request , g

用于存储临时变量,可以在一次请求的多个视图函数之间传递参数

g.变量名 = 值

from flask import Flask, request, g

app = Flask(__name__)

@app.route("/index")
def index():
g.username = "zhangsan"
return set_dj()

def set_dj():
name = g.username
return name

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

可以在一次请求的多个视图函数之间传递参数



flask_script脚本的使用

使用命令行启动脚本

首先需要安装flask_script

pip install flask_script

导入

from flask_script import Manager
manager = Manager(app) 创建app的应用对象,将业务全部接管过来给manager


from flask import Flask
from flask_script import Manager # 启动命令的管理类

app = Flask(__name__)

# 创建Manager类的管理对象
# 创建当前flask应用的管理对象,通过创建出来的对象接手该应用的操作
manager = Manager(app)

@app.route("/index")
def index():
return "index page"

if __name__ == '__main__':
# app.run(debug=True)
# 通过脚本启动
manager.run()

所以在启动的时候就可以使用 manager.run() 启动

python3 10_flask_script.py runserver

本文共计677个文字,预计阅读时间需要3分钟。

Flask中如何使用请求钩子访问g对象?

请使用装饰器以装饰器方式实现请求钩子,Flask支持以下四种请求钩子:

- @app.before_first_request:程序第一次请求前执行- @app.before_request:每次请求前执行- @app.after_request:请求后执行- @app.teardown_request:请求结束后执行

请求钩子是通过装饰器方式实现的,flask支持四种请求钩子

@app.before_first_request 程序第一次请求前执行

@app.before_request 每次程序请求前执行

@app.after_request 程序运行之后执行,前提是程序无报错

Flask中如何使用请求钩子访问g对象?

@app.teardown_request 程序运行之后执行,不管报不报错都执行

视图函数名可以随便起的。

from flask import Flask , request

app = Flask(__name__)

@app.route("/index")
def index():
print("index被执行")
return "dj"

@app.before_first_request
def handle_before_first_request():
"""在程序第一次请求前执行"""
print("before_first_request被执行")

@app.before_request
def handle_before_request():
"""每次程序请求前执行"""
print("before_request被执行")

@app.after_request
def handle_after_request(response):
"""程序请求结束执行,前提是程序无异常"""
print("after_request被执行")
return response

@app.teardown_request
def handle_teardown_request(response):
"""
在每次请求(视图函数处理之后)都被执行,无论视图函数是否出现异常,都被执行
工作在非调试模式时,debug=False
"""
print("handle_teardown_request被执行")
return response

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

第一次执行的结果

第二次执行的结果



上下文对象

g对象方法

from flask import Flask , request , g

用于存储临时变量,可以在一次请求的多个视图函数之间传递参数

g.变量名 = 值

from flask import Flask, request, g

app = Flask(__name__)

@app.route("/index")
def index():
g.username = "zhangsan"
return set_dj()

def set_dj():
name = g.username
return name

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

可以在一次请求的多个视图函数之间传递参数



flask_script脚本的使用

使用命令行启动脚本

首先需要安装flask_script

pip install flask_script

导入

from flask_script import Manager
manager = Manager(app) 创建app的应用对象,将业务全部接管过来给manager


from flask import Flask
from flask_script import Manager # 启动命令的管理类

app = Flask(__name__)

# 创建Manager类的管理对象
# 创建当前flask应用的管理对象,通过创建出来的对象接手该应用的操作
manager = Manager(app)

@app.route("/index")
def index():
return "index page"

if __name__ == '__main__':
# app.run(debug=True)
# 通过脚本启动
manager.run()

所以在启动的时候就可以使用 manager.run() 启动

python3 10_flask_script.py runserver