Skip to main content

django-rest-framework exception handler build with functools.singledispatch

Project description

Django REST framework exception dispatcher

django-rest-framework exception handler build with funtools.singledispatch.

Installation

To use drf-exception-dispatcher simply install it with your package manager, e.g. to with pip:

pip install drf-exception-dispatcher

Then simply use exception_dispatcher.handlers.exception_handler ( or your own exception handler built on exception_dispatcher) in Django's settings REST_FRAMEWORK section:

REST_FRAMEWORK = {
  # ...
  'EXCEPTION_HANDLER': 'exception_dispatcher.handlers.exception_handler',
  # ...
}

Configuration

Following settings are present to make default exception_dispatcher handler configurable:

  • EXCEPTION_DISPATCHER_SET_ROLLBACK (defaults to True) - indicate if set_rollback should be called before returning response from exception handler
  • EXCEPTION_DISPATCHER_API_EXCEPTION_PARSER (defaults to exception_dispatcher.parsers.parse_rest_framework_api_exception') - import path to callable that is used to translate occurred exception to response data

Usage

To add new handlers to exception_dispatchers simply use dispatcher's register() method, e.g. to add handler of SuspiciousOperation exceptions:

from exception_dispatcher.dispatchers import exception_dispatcher
from exception_dispatcher.types import ContextType
from rest_framework.response import Response


@exception_dispatcher.register
def handler_suspicious_operation(
    exception: SuspiciousOperation,
    context: ContextType,
) -> Response | None:
    """Handle Django's `SuspiciousOperation` exceptions."""
    # custom ``exception` handler logic goes here
    return None

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

drf-exception-dispatcher-0.1.0.tar.gz (5.6 kB view hashes)

Uploaded Source

Built Distribution

drf_exception_dispatcher-0.1.0-py3-none-any.whl (7.8 kB view hashes)

Uploaded 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