diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 3f3c9110a..5682361fa 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -84,6 +84,7 @@ DEFAULTS = { # Exception handling 'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler', 'NON_FIELD_ERRORS_KEY': 'non_field_errors', + 'EXCEPTION_DETAIL_KEY': 'detail', # Testing 'TEST_REQUEST_RENDERER_CLASSES': ( diff --git a/rest_framework/views.py b/rest_framework/views.py index 8ec5f14ab..24d702f08 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -64,6 +64,7 @@ def exception_handler(exc, context): Any unhandled exceptions may return `None`, which will cause a 500 error to be raised. """ + exception_detail_key = api_settings.EXCEPTION_DETAIL_KEY if isinstance(exc, exceptions.APIException): headers = {} if getattr(exc, 'auth_header', None): @@ -74,21 +75,21 @@ def exception_handler(exc, context): if isinstance(exc.detail, (list, dict)): data = exc.detail else: - data = {'detail': exc.detail} + data = {exception_detail_key: exc.detail} set_rollback() return Response(data, status=exc.status_code, headers=headers) elif isinstance(exc, Http404): msg = _('Not found.') - data = {'detail': six.text_type(msg)} + data = {exception_detail_key: six.text_type(msg)} set_rollback() return Response(data, status=status.HTTP_404_NOT_FOUND) elif isinstance(exc, PermissionDenied): msg = _('Permission denied.') - data = {'detail': six.text_type(msg)} + data = {exception_detail_key: six.text_type(msg)} set_rollback() return Response(data, status=status.HTTP_403_FORBIDDEN)