A flask-style `route` decorator for django views
Project description
A flask-style `route` decorator for django views
================================================
> Simple things should be simple, complex things should be possible (c)Alan Kay
There is some contradiction between decoupling and DRY principles
in django urls. Why not use flasky `@route` decorator to fix this issue?
Install
-------
pip install django-route-decorator
It's compatible with django >= 2.0 only,
because it uses new `urls.path` syntax.
Simple things should be simple
------------------------------
Just decorate your views with an instance of `Route`:
from route_decorator import Route
route = Route()
@route
def foo_view(request):
...
@route
def bar_view(request):
...
And don't forget to add the routes into your `urls.py`:
from . import views
urlpatterns += views.route.patterns
Now you have your views binded to `/foo-view` and `/bar-view` respectively.
You can also get map urlname -> url with `route.names` and pass them to
frontend maybe. In our case it would be:
{
'foo_view': '/foo-view',
'bar_view': '/bar-view'
}
Complex things should be possible
---------------------------------
You can pass `url_prefix` and `name_prefix` to route:
route = Router('/api', 'api:')
And also use `path` and `name` in a decorator:
@route('/baz', 'baz-name')
def baz_view(request):
...
So it would be bind to `/api/baz` with name `api:baz-name`.
================================================
> Simple things should be simple, complex things should be possible (c)Alan Kay
There is some contradiction between decoupling and DRY principles
in django urls. Why not use flasky `@route` decorator to fix this issue?
Install
-------
pip install django-route-decorator
It's compatible with django >= 2.0 only,
because it uses new `urls.path` syntax.
Simple things should be simple
------------------------------
Just decorate your views with an instance of `Route`:
from route_decorator import Route
route = Route()
@route
def foo_view(request):
...
@route
def bar_view(request):
...
And don't forget to add the routes into your `urls.py`:
from . import views
urlpatterns += views.route.patterns
Now you have your views binded to `/foo-view` and `/bar-view` respectively.
You can also get map urlname -> url with `route.names` and pass them to
frontend maybe. In our case it would be:
{
'foo_view': '/foo-view',
'bar_view': '/bar-view'
}
Complex things should be possible
---------------------------------
You can pass `url_prefix` and `name_prefix` to route:
route = Router('/api', 'api:')
And also use `path` and `name` in a decorator:
@route('/baz', 'baz-name')
def baz_view(request):
...
So it would be bind to `/api/baz` with name `api:baz-name`.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for django-route-decorator-0.0.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0dedf170a0a0d7126171dcbb62804412b38c03fa3ae94087d2ae5d1e0e2a302 |
|
MD5 | 4e7c2ae01931808e55de674d52249196 |
|
BLAKE2b-256 | a82fd92992e26d1233bc7eebe0efdc8b8cd275d95f7d9f3b9406d76682291f58 |