gpt4 book ai didi

python - 如何将参数传递给 after_request?

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:27 24 4
gpt4 key购买 nike

我是 Flask 的新手,正在学习 @app.after_request@app.teardown_appcontext。我有一个 decorated view对于接受参数的 oauthlib,data(这是一个对象)。

@app.route('/api/me')
@oauth.require_oauth()
def me(data):
user = data.user
return jsonify(username=user.username)

执行此 View (以及许多其他 View )后,我想更新我的数据库,但需要访问变量 data。我如何使用 @app.after_request@app.teardown_appcontext 做到这一点?

@app.after_request
def record_ip(response):
client = data.client # needs access to "data"
.... log stuff in my database ...
return response

最佳答案

您可以将对象添加到 flask.g globals object :

from flask import g

@app.route('/api/me')
@oauth.require_oauth()
def me(req):
user = req.user
g.oauth_request = req
return jsonify(username=user.username)

@app.after_request
def record_ip(response):
req = g.get('oauth_request')
if req is not None:
client = req.client # needs access to "req"
# .... log stuff in my database ...

return response

全局flask.g 上下文是线程安全的并且绑定(bind)到当前请求;引用自 documentation :

The application context is created and destroyed as necessary. It never moves between threads and it will not be shared between requests.

关于python - 如何将参数传递给 after_request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22258497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com