mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-10 19:56:59 +03:00
NON_FIELD_ERRORS_KEY setting
This commit is contained in:
parent
0d354e8f92
commit
6db3356c4d
|
@ -198,7 +198,9 @@ class Serializer(BaseSerializer):
|
|||
Dict of native values <- Dict of primitive datatypes.
|
||||
"""
|
||||
if not isinstance(data, dict):
|
||||
raise ValidationError({'non_field_errors': ['Invalid data']})
|
||||
raise ValidationError({
|
||||
api_settings.NON_FIELD_ERRORS_KEY: ['Invalid data']
|
||||
})
|
||||
|
||||
ret = {}
|
||||
errors = {}
|
||||
|
@ -224,7 +226,9 @@ class Serializer(BaseSerializer):
|
|||
try:
|
||||
return self.validate(ret)
|
||||
except ValidationError as exc:
|
||||
raise ValidationError({'non_field_errors': exc.messages})
|
||||
raise ValidationError({
|
||||
api_settings.NON_FIELD_ERRORS_KEY: exc.messages
|
||||
})
|
||||
|
||||
def to_representation(self, instance):
|
||||
"""
|
||||
|
|
|
@ -77,6 +77,7 @@ DEFAULTS = {
|
|||
|
||||
# Exception handling
|
||||
'EXCEPTION_HANDLER': 'rest_framework.views.exception_handler',
|
||||
'NON_FIELD_ERRORS_KEY': 'non_field_errors',
|
||||
|
||||
# Testing
|
||||
'TEST_REQUEST_RENDERER_CLASSES': (
|
||||
|
|
|
@ -3,7 +3,7 @@ Provides an APIView class that is the base of all views in REST framework.
|
|||
"""
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.core.exceptions import PermissionDenied, ValidationError
|
||||
from django.core.exceptions import PermissionDenied, ValidationError, NON_FIELD_ERRORS
|
||||
from django.http import Http404
|
||||
from django.utils.datastructures import SortedDict
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
|
@ -69,6 +69,12 @@ def exception_handler(exc):
|
|||
headers=headers)
|
||||
|
||||
elif isinstance(exc, ValidationError):
|
||||
# ValidationErrors may include the non-field key named '__all__'.
|
||||
# When returning a response we map this to a key name that can be
|
||||
# modified in settings.
|
||||
if NON_FIELD_ERRORS in exc.message_dict:
|
||||
errors = exc.message_dict.pop(NON_FIELD_ERRORS)
|
||||
exc.message_dict[api_settings.NON_FIELD_ERRORS_KEY] = errors
|
||||
return Response(exc.message_dict,
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user