Throwing web exceptions like in AioHTTP
In AioHTTP you can raise any response as exception (this is very cool). But Django can raise only 3+1 web exceptions.
- 400 SuspiciousOperation
- 403 PermissionDenied
- 404 Http404
- 500 Any other non catched exception
This package allow you to raise as exception any of HTTP response.
The full documentation is at https://web-exceptions.readthedocs.io.
Install Django Web Exceptions:
pip install django-web-exceptions
Add it to your MIDDLEWARE:
# settings.py
MIDDLEWARE = (
# ...
'web_exceptions.middleware.WebExceptionsMiddleware',
# ...
)
Import exceptions and raise anywhere
# views.py
from web_exceptions import exceptions
# ...
def index(request):
""" Simple view raise redirectexception """
raise exceptions.HTTPMovedPermanently('/foo')
Also you can customize any kind of exception status code as custom handler, defined in urls.py like django error handlers .
# urls.py
from myapp import views
handler300 = <callable view>
handler400 = <callable view>
handler<status_code> = <callable view>
For more example see example proj
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install tox (myenv) $ tox
Tools used in rendering this package: