【发布时间】:2015-03-12 09:26:20
【问题描述】:
我希望能够在返回 HTTP 调用的响应之前访问请求对象。 我想通过“teardown_request”和“after_request”访问请求:
from flask import Flask
...
app = Flask(__name__, instance_relative_config=True)
...
@app.before_request
def before_request():
# do something
@app.after_request
def after_request(response):
# get the request object somehow
do_something_based_on_the_request_endpoint(request)
@app.teardown_request
def teardown_request(response):
# get the request object somehow
do_something_based_on_the_request_endpoint(request)
我看到我可以将请求添加到 g 并执行以下操作:
g.curr_request = request
@app.after_request
def after_request(response):
# get the request object somehow
do_something_based_on_the_request_endpoint(g.curr_request)
但上面的内容似乎有点奇怪。我确信有更好的方法来访问请求。
谢谢
【问题讨论】:
-
您能否通过以下方式澄清您的问题:1)添加相关的导入语句 2)“我想通过“teardown_request”和“after_request”访问:”是什么意思?
-
@joostdevries - 我编辑了这个问题。我想在发送响应之前根据原始请求进行一些操作(在我的情况下,我需要根据请求 URL 处理与数据库事务相关的一些事情......),但我不确定如何访问“after_request”和“teardown_request”中的请求
-
使用 g 保留对请求的引用有什么问题,或者更好的是,只保留 url 或 url 的相关部分?鉴于此处推荐的模式与您想要的相反(修改 before_request() 方法中的响应),使用 g 似乎是一个简单而合理的解决方案:flask.pocoo.org/docs/0.10/patterns/deferredcallbacks
-
我认为有更好的方法,但我绝对可以使用 g。
-
实际上 - 我再次调试并看到我确实在 teardown/after_request bu 中使用:from flask import request
标签: python flask flask-restful