Python - Flask Default Route possible?

前端 未结 3 1187
情深已故
情深已故 2020-12-05 04:44

In Cherrypy it\'s possible to do this:

@cherrypy.expose
def default(self, url, *suburl, **kwarg):
    pass

Is there a flask equivalent?

相关标签:
3条回答
  • 2020-12-05 05:04
    @app.errorhandler(404)
    def handle_404(e):
        # handle all other routes here
        return 'Not Found, but we HANDLED IT
    
    0 讨论(0)
  • 2020-12-05 05:09

    There is a snippet on Flask's website about a 'catch-all' route for flask. You can find it here.

    Basically the decorator works by chaining two URL filters. The example on the page is:

    @app.route('/', defaults={'path': ''})
    @app.route('/<path:path>')
    def catch_all(path):
        return 'You want path: %s' % path
    

    Which would give you:

    % curl 127.0.0.1:5000          # Matches the first rule
    You want path:  
    % curl 127.0.0.1:5000/foo/bar  # Matches the second rule
    You want path: foo/bar
    
    0 讨论(0)
  • 2020-12-05 05:17

    If you single page application has nested routes (e.g. www.myapp.com/tabs/tab1 - typical in Ionic/Angular routing), you can extend the same logic like this:

    @app.route('/', defaults={'path1': '', 'path2': ''})
    @app.route('/<path:path1>', defaults={'path2': ''})
    @app.route('/<path:path1>/<path:path2>')
    def catch_all(path1, path2):
        return app.send_static_file('index.html')
    
    0 讨论(0)
提交回复
热议问题