18

我希望能够在返回 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)

但是上面的似乎有点奇怪。我确信有更好的方法来访问请求。

谢谢

4

2 回答 2

33

解决方法很简单——

from flask import request

@app.after_request
def after_request(response):
    do_something_based_on_the_request_endpoint(request)
    return response
于 2015-01-14T09:30:53.313 回答
0

还可以尝试 teardown_request(异常)。这会执行“无论是否有异常”。检查文档: http: //flask.pocoo.org/docs/0.12/api/#flask.Flask.teardown_request

于 2017-06-19T14:29:03.293 回答