Ily*_*lya 7 python werkzeug flask
我有一个案例,在继续我的主应用程序之前有一个初步的前端Flask应用程序.
我使用"中间件"模式实现了它:
class MyMiddleware(object):
def __init__(self, main_app, pre_app):
self.main_app = main_app
self.pre_app = pre_app
def __call__(self, environ, start_response):
# check whether pre_app has a rule for this URL
with self.pre_app.request_context(environ) as ctx:
if ctx.request.url_rule is None:
return self.main_app(environ, start_response)
return self.pre_app(environ, start_response)
Run Code Online (Sandbox Code Playgroud)
有没有更惯用的方法来做这个,而不是创建一个上下文只是为了检查URL是否由应用程序处理?我想保持保留两个应用程序的灵活性.
每个flask.Flask app都有一个url_map属性 - 这是一个werkzeug.routing.Map. 您可以运行bind_to_environ并使用以下方法testMapAdapter:
if self.pre_app.url_map.bind_to_environ(environ).test(environ['PATH_INFO']):
return self.pre_app(environ, start_response)
return self.main_app(environ, start_response)
Run Code Online (Sandbox Code Playgroud)
我不知道我会称其为“更惯用的”,但这是处理用例的另一种方式。
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |