dpe
drf-pretty-exception-handler
pypi i drf-pretty-exception-handler
dpe

drf-pretty-exception-handler

Django Rest Framework pretty exception handler

by Ivlev Denis

0.1.3 (see all)License:MIT license
pypi i drf-pretty-exception-handler
Readme

Django Rest Framework pretty exception handler

https://pypi.python.org/pypi/drf_pretty_exception_handler https://travis-ci.com/ivlevdenis/drf_pretty_exception_handler https://drf-pretty-exception-handler.readthedocs.io/en/latest/?badge=latest https://pyup.io/repos/github/ivlevdenis/drf_pretty_exception_handler/

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',
    ...
}

License

Free software: MIT license

Features

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"
    ]
  }
}

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

GitHub Stars

16

LAST COMMIT

2yrs ago

MAINTAINERS

1

CONTRIBUTORS

1

OPEN ISSUES

1

OPEN PRs

1
VersionTagPublished
0.1.3
9mos ago
0.1.2
1yr ago
0.1.1
2yrs ago
0.1.0
2yrs ago
No alternatives found
No tutorials found
Add a tutorial