python – 如何在Flask MIddleware中访问请求
发布时间:2020-11-18 02:22:07 所属栏目:Python 来源:互联网
导读:我想在中间件中访问request.url. Flask app – test.py from flask import Flaskfrom middleware import TestMiddlewareapp = Flask(__name__)app.wsgi_app = TestMiddleware(app.wsgi_app)@app.route(/)def hello_wo
|
我想在中间件中访问request.url. Flask app – test.py from flask import Flask
from middleware import TestMiddleware
app = Flask(__name__)
app.wsgi_app = TestMiddleware(app.wsgi_app)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
middleware.py: from flask import request
class TestMiddleware(object):
def __init__(self,app):
self.app = app
def __call__(self,environ,start_response):
# How do I access request object here.
print "I'm in middleware"
return self.app(environ,start_response)
我理解可以在Flask应用程序上下文中访问请求.我们通常使用 with app.test_request_context() 但在中间件中,我无法访问Flask app对象. 我该怎么办? 谢谢你的帮助.. 解决方法它是构造请求对象的应用程序对象:它在调用应用程序之前不存在,因此中间件无法事先查看它.但是,您可以在中间件中构建自己的请求对象(直接使用Werkzeug而不是Flask):from werkzeug.wrappers import Request req = Request(environ,shallow=True) 您甚至可以以相同的方式构造Flask自己的Request对象(flask.wrappers.Request,它是Werkzeug的Request类的子类).看看the source我没有看到任何阻止你这样做的东西,但是因为它不是那样设计的,你可能最好不要使用Werkzeug,除非你需要添加一个额外的属性Flask的子类. (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- django – Travis:“创建测试数据库时出错:创建数据库的权
- python – PIL open()方法不能使用BytesIO
- 【Python有坑系列】列表推导和循环中的变量泄漏
- python – 捕获图像进行处理
- 如何重定向到DJANGO中包含非ascii字符的查询字符串URL?
- AIX上的Python:我的选择是什么?
- python – 我可以在没有循环的情况下清理一个numpy数组吗?
- 有没有办法让Django的USStateField()没有预先选择的值?
- Python – 从作为另一个元素的子串的字符串列表中删除任何元
- python – sqlalchemy在yield_per期间发生游标错误
