检测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?