Provides a clean, simple URL routing framework for growing Flask Applications.
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.
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 :)
- Fix: Setup to allow bdist_wheel installs
- Improved: @joonathan added kwargs passing to the Blueprint Router
- Improved: init_app and added __init__
- Added: Deprecation warning to Basic router
- Hotfix: Fixed issue where routes would be reregistered with an app incorrectly in the event of multiple app creations
- Feature: Include now supports endpoint prefixing
- Feature: Blueprint router can now take a blueprint instance
- Feature: Added support for VIA_ROUTES_NAME to set a common routes name
- Deprecated: Basic Router in favour of the Functional router
- Improved: Pluggable Router API is now cleaner
- Improved: Test Suite now uses PyTest
- Improved: ImproperlyConfigured now raised if routes module is not defined in either init_app or in application configuration via VIA_ROUTES_MODULE
- Feature: Flask Admin Router
- Feature: Include url_prefix option
- Feature: Flask extension initialisation
- Feature: Basic and Pluggable Flask Routers
- Feature: Flask-Restful Router
- Feature: Ability to include other routes
- Feature: Ability to register blueprints