Flask请求钩子和g对象

网友投稿 286 2022-08-28


Flask请求钩子和g对象

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

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

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

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

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

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

from flask import Flask , requestapp = Flask(__name__)@app.route("/index")def index(): print("index被执行") return "dj"@app.before_first_requestdef handle_before_first_request(): """在程序第一次请求前执行""" print("before_first_request被执行")@app.before_requestdef handle_before_request(): """每次程序请求前执行""" print("before_request被执行")@app.after_requestdef handle_after_request(response): """程序请求结束执行,前提是程序无异常""" print("after_request被执行") return response@app.teardown_requestdef handle_teardown_request(response): """ 在每次请求(视图函数处理之后)都被执行,无论视图函数是否出现异常,都被执行 工作在非调试模式时,debug=False """ print("handle_teardown_request被执行") return responseif __name__ == '__main__': app.run()

第一次执行的结果

第二次执行的结果

上下文对象

g对象方法

from flask import Flask , request , g

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

g.变量名 = 值

from flask import Flask, request, gapp = Flask(__name__)@app.route("/index")def index(): g.username = "zhangsan" return set_dj()def set_dj(): name = g.username return nameif __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 import Flaskfrom 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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Flask模板与自定义过滤器
下一篇:Java实现经典捕鱼达人游戏的示例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~