检测Flask应用程序是否处理URL
在继续使用我的主应用程序之前,我有一个初步的前端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)
有没有一种更习惯的方式来做到这一点,而不是创建一个上下文来检查URL是否被应用程序处理? 我想保持保持两个应用程序的灵活性。
每个flask.Flask
app
都有一个url_map
属性 - 这是一个werkzeug.routing.Map
。 你可以只运行bind_to_environ
并使用test
从方法MapAdapter
:
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)
我不知道我会称之为“更习惯”,但它是处理您的用例的另一种方式。
链接地址: http://www.djcxy.com/p/33517.html上一篇: Detecting whether a Flask app handles a URL
下一篇: How to perform an action exactly after 0.3 seconds for a given number of times?