Skip to main content

An Django app for returning consistent, verbose and easy to parse error messages on Django Rest Framework backends.

Project description

Hipo DRF Exceptions

hipo Build Status pypi

A Django app for returning consistent, verbose and easy to parse error messages on Django Rest Framework backends.

Table of Contents

Installation

You can get stable version of Hipo Excepitons by using pip, pipenv or poetry:

pip install hipo-drf-exceptions

Usage

Handler

You will need to set EXCEPTION_HANDLER of the REST_FRAMEWORK setting of your Django project settings.py file.

REST_FRAMEWORK = {
    ..
    'EXCEPTION_HANDLER': 'hipo_drf_exceptions.handler',
}

Example Error Responses

Field Error

Have validations on model level and raise ValidationError when it is required.

from django.core.exceptions import ValidationError

class Invitation(models.Model):
    email = models.EmailField(unique=True)

    def save(self, *args, **kwargs):
        if User.objects.filter(email=self.email).exists():
            raise ValidationError({"email": _("Email is already registered.")})
            
        super().save(*args, **kwargs)

If the view or serializer encounters with the ValidationError, The response will be like:

{
    "type": "ValidationError",
    "detail": {
        "email": [
            "Email is already registered."
        ]
    },
    "fallback_message": "'email' has an error. Email is already registered."
}

Non Field Error

Implement your own error classes.

from hipo_drf_exceptions import BaseAPIException

class ProfileCredentialError(BaseAPIException):
    default_detail = _('Profile credentials are not correct.')

Raise error when it is required.

class AuthenticationView(GenericAPIView):

    def post(self, request, *args, **kwargs):
        ..
        if not profile.check_password(password):
            raise ProfileCredentialError()
        ..

The response will be like:

{
    "type": "ProfileCredentialError",
    "detail": {
        "non_field_errors": [
            "Profile credentials are not correct."
        ]
    },
    "fallback_message": "Profile credentials are not correct."
}

Support

Please open an issue for support.

Contributing

Please contribute using Github Flow. Create a branch, add commits, and open a pull request.

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

hipo-drf-exceptions-0.1.0.tar.gz (7.8 kB view hashes)

Uploaded Source

Built Distribution

hipo_drf_exceptions-0.1.0-py2.py3-none-any.whl (12.3 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page