Python - Flask Default Route possible? Python - Flask Default Route possible? python python

Python - Flask Default Route possible?


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 ruleYou want path:  % curl 127.0.0.1:5000/foo/bar  # Matches the second ruleYou want path: foo/bar


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')


@app.errorhandler(404)def handle_404(e):    # handle all other routes here    return 'Not Found, but we HANDLED IT