Django Rest Framework pretty exception handler
Dependencies
- Python 3.7+
- Django 2.0+
- Django Rest Framework 3.10+
Setup
You can install the library directly from pypi using pip:
$ pip install drf-pretty-exception-handler
Edit your REST_FRAMEWORK settings in settings.py file:
REST_FRAMEWORK = {
...
'EXCEPTION_HANDLER': 'drf_pretty_exception_handler.exception_handler',
...
}
Free software: MIT license
Default Django Rest Framework exception handler return errors in different formats.
Examples:
Response on raise exceptions.APIException
.
{
"detail": "A server error occurred."
}
Response on raise exceptions.ValidationError
.
[
"Invalid input."
]
Response on raise exceptions.ValidationError
if error in field serializator.
{
"email": [
"This field is required."
]
}
Response on raise exceptions.ValidationError
in serializator .validate()
.
{
"non_field_errors": [
"Passwords does not match"
]
}
This greatly complicates error handling in the frontend. This package provide own format of errors.
{
"status_code": 500,
"errors": {
"non_field_errors": [
"A server error occurred."
]
}
}
{
"status_code": 400,
"errors": {
"non_field_errors": [
"Invalid input."
]
}
}
{
"status_code": 400,
"errors": {
"email": [
"This field is required."
]
}
}
{
"status_code": 400,
"errors": {
"non_field_errors": [
"Passwords does not match"
]
}
}
And this package handle default Python exceptions.
l = [1, 2, 3, 4]
l[10]
{
"status_code": 500,
"errors": {
"non_field_errors": [
"IndexError: list index out of range"
]
}
}
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.