Inspired by the Django URL configuration system, Flask-Via
is designed to add similar functionality to Flask applications which have grown beyond a simple single file application.
python
from flask import Flask from flask.ext.via import Via from flask.ext.via.routers.default import Functional
app = Flask(__name__)
- def foo(bar=None):
return 'Foo View!'
- routes = [
Functional('/foo', foo), Functional('/foo/<bar>', foo, endpoint='foo2'),
]
via = Via() via.init_app(app, route_module='flask_via.examples.basic')
- if __name__ == "__main__":
app.run(debug=True)
Growing your application can be quite difficult when it's not always clear where and how your routes are discovered. This can lead to a cluttered application factory method when all your routes are defined at application creation - resulting in code which is difficult to maintain, not to mention messy.
A better solution is to define your routes in a routes.py
and automatically load them at application start up. This is what Flask-Via
helps to do.
Third party Flask extensions don't always follow the same conventions for adding routes to an application, so Flask-Via
has been designed to be easy for developers to write their own custom routers. For an example of this, take a look at the bundled Flask-Restful
Resource router.
If you do write a custom router that is useful to you, it will probably be useful to someone else so please do contribute back :)