请求钩子是通过装饰器方式实现的,flask支持四种请求钩子 @app.before_first_request 程序第一次请求前执行 @app.before_request 每次程序请求前执行 @app.after_request 程序运行之后执行,前提是程序
请求钩子是通过装饰器方式实现的,flask支持四种请求钩子
@app.before_first_request 程序第一次请求前执行
@app.before_request 每次程序请求前执行
@app.after_request 程序运行之后执行,前提是程序无报错
@app.teardown_request 程序运行之后执行,不管报不报错都执行
视图函数名可以随便起的。
from flask import Flask , requestapp = Flask(__name__)
.route("/index")
def index():
print("index被执行")
return "dj"
.before_first_request
def handle_before_first_request():
"""在程序第一次请求前执行"""
print("before_first_request被执行")
.before_request
def handle_before_request():
"""每次程序请求前执行"""
print("before_request被执行")
.after_request
def handle_after_request(response):
"""程序请求结束执行,前提是程序无异常"""
print("after_request被执行")
return response
.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, gapp = Flask(__name__)
.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 Managermanager = Manager(app) 创建app的应用对象,将业务全部接管过来给manager
from flask_script import Manager # 启动命令的管理类
app = Flask(__name__)
# 创建Manager类的管理对象
# 创建当前flask应用的管理对象,通过创建出来的对象接手该应用的操作
manager = Manager(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