【问题标题】:Detecting whether a Flask app handles a URL检测 Flask 应用程序是否处理 URL
【发布时间】:2016-04-18 10:22:36
【问题描述】:

在继续我的主应用程序之前,我有一个初步的前端 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 是否由应用处理?我想保持保​​留两个应用程序的灵活性。

【问题讨论】:

    标签: python flask werkzeug


    【解决方案1】:

    每个flask.Flask app 都有一个url_map 属性 - 这是一个werkzeug.routing.Map。您可以运行bind_to_environ并使用the test method from 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)
    

    我不知道我会称它为“更惯用”,但这是处理您的用例的另一种方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-20
      • 1970-01-01
      相关资源
      最近更新 更多