2016-04-18 11 views
7

को संभालता है या नहीं, मेरे पास मेरे मुख्य ऐप को जारी रखने से पहले प्रारंभिक फ्रंटएंड फ्लास्क ऐप रखने का मामला है।यह पता लगाने के लिए कि कोई फ्लास्क ऐप यूआरएल

मैं इसे एक "मध्यस्थ" पद्धति का उपयोग कर क्रियान्वित किया है:

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) 

वहाँ ऐसा करने का एक और अधिक मुहावरेदार रास्ता नहीं है, यूआरएल अनुप्रयोग द्वारा नियंत्रित किया जाता है कि क्या सिर्फ जांच करने के लिए एक संदर्भ बनाने के बिना? मैं दो ऐप्स रखने की लचीलापन बनाए रखना चाहता हूं।

उत्तर

3

प्रत्येक flask.Flaskapp में 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) 

मैं नहीं जानता कि मैं इसे "अधिक मुहावरेदार" कहते हैं, लेकिन यह आपके उपयोग के मामले से निपटने का एक और तरीका है।

संबंधित मुद्दे