python flask请求钩子

时间:2014-03-26 09:22:00

标签: python flask request

我希望能够将所有传入的request中的一些数据添加到烧瓶中的requests变量中。是否有一种简单的方法可以挂钩,而不必将这个逻辑写入我的每个端点?

2 个答案:

答案 0 :(得分:7)

您可能正在寻找flask.Flask.before_request。请至少浏览API文档,它写得很好,并且可能会提供关键字,您可以搜索以后可能遇到的问题的解决方案。

此外,您不一定能够将数据添加到request属性formargs中,因为它们是不可变的,请考虑使用g from flask import Flask, request, g app = Flask(__name__) @app.route('/') def home(): return g.target + '\n' @app.before_request def before_req(): g.target = request.args.get('target', 'default') if __name__ == '__main__': app.run() 3}}

使用示例:

$ wget -qO - 'http://localhost:5000/?target=value'
value
$ wget -qO - 'http://localhost:5000/?key=value'
default

用法:

{{1}}

答案 1 :(得分:0)

在请求钩子函数和视图函数之间共享数据的常见模式是 使用 g 上下文全局。例如,before_request 处理程序可以从数据库加载登录用户并将其存储在 g.user 中。稍后,当调用视图函数时, 它可以从那里访问用户。或者,登录的新用户可能需要执行一些活动才能访问 Web 应用程序中的页面。例如,新用户可能需要在访问 Web 应用程序的主页之前验证他/她的电子邮件。 before_request 装饰器将拦截他打算访问的主页的特定视图函数,并阻止他访问它,直到电子邮件被验证。

Click there to learn more about how how before_request and after_request works in flask. I hope you find it helpful.