rest_framework_custom_exceptions/exceptions.py
def simple_error_handler(exc, *args):
    """
    Returns the response that should be used for any given exception.

    By default we handle the REST framework `APIException`, and also
    Django's builtin `Http404` and `PermissionDenied` exceptions.

    Any unhandled exceptions may return `None`, which will cause a 500 error
    to be raised.
    """
    if isinstance(exc, exceptions.APIException):
        headers = {}
        if getattr(exc, 'auth_header', None):
            headers['WWW-Authenticate'] = exc.auth_header
        if getattr(exc, 'wait', None):
            headers['X-Throttle-Wait-Seconds'] = '%d' % exc.wait

        return Response({'error': exc.detail},
                        status=exc.status_code,
                        headers=headers)

    elif isinstance(exc, Http404):
        return Response({'error': 'Not found'},
                        status=status.HTTP_404_NOT_FOUND)

    elif isinstance(exc, PermissionDenied):
        return Response({'error': 'Permission denied'},
                        status=status.HTTP_403_FORBIDDEN)

    # Note: Unhandled exceptions will raise a 500 error.
    return None
def simple_error_handler(exc, *args):
    if isinstance(exc, exceptions.APIException):
        headers = {}
        if getattr(exc, 'auth_header', None):
            headers['WWW-Authenticate'] = exc.auth_header
        if getattr(exc, 'wait', None):
            headers['X-Throttle-Wait-Seconds'] = '%d' % exc.wait

        return Response({'error': exc.detail},
                        status=exc.status_code,
                        headers=headers)

    elif isinstance(exc, Http404):
        return Response({'error': 'Not found'},
                        status=status.HTTP_404_NOT_FOUND)

    elif isinstance(exc, PermissionDenied):
        return Response({'error': 'Permission denied'},
                        status=status.HTTP_403_FORBIDDEN)

    # Note: Unhandled exceptions will raise a 500 error.
    return None
def simple_error_handler ( exc , * args ) : if isinstance ( exc , exceptions . APIException ) : headers = { } if getattr ( exc , 'auth_header' , None ) : headers [ 'WWW-Authenticate' ] = exc . auth_header if getattr ( exc , 'wait' , None ) : headers [ 'X-Throttle-Wait-Seconds' ] = '%d' % exc . wait return Response ( { 'error' : exc . detail } , status = exc . status_code , headers = headers ) elif isinstance ( exc , Http404 ) : return Response ( { 'error' : 'Not found' } , status = status . HTTP_404_NOT_FOUND ) elif isinstance ( exc , PermissionDenied ) : return Response ( { 'error' : 'Permission denied' } , status = status . HTTP_403_FORBIDDEN ) # Note: Unhandled exceptions will raise a 500 error. return None
Returns the response that should be used for any given exception.

    By default we handle the REST framework `APIException`, and also
    Django's builtin `Http404` and `PermissionDenied` exceptions.

    Any unhandled exceptions may return `None`, which will cause a 500 error
    to be raised.
Returns the response that should be used for any given exception .