aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2014-11-03 14:01:02 +0000
committerTom Christie2014-11-03 14:01:02 +0000
commit003c42b0f51f9bfa93964be69fb8cb68b7394280 (patch)
treefb357dc2ae004dd827392f8ec2dc86d3b1d5c4cc
parentd27b8cc09b83bac10346effa1021493d2835b794 (diff)
downloaddjango-rest-framework-003c42b0f51f9bfa93964be69fb8cb68b7394280.tar.bz2
Use invalid_data key for error message. Closes #2002.
-rw-r--r--rest_framework/serializers.py10
-rw-r--r--tests/test_validation.py7
2 files changed, 14 insertions, 3 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index 82e932dd..f00b685f 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -15,6 +15,7 @@ from django.db import models
from django.db.models.fields import FieldDoesNotExist
from django.utils import six
from django.utils.datastructures import SortedDict
+from django.utils.translation import ugettext_lazy as _
from rest_framework.exceptions import ValidationError
from rest_framework.fields import empty, set_value, Field, SkipField
from rest_framework.settings import api_settings
@@ -282,6 +283,10 @@ class SerializerMetaclass(type):
@six.add_metaclass(SerializerMetaclass)
class Serializer(BaseSerializer):
+ default_error_messages = {
+ 'invalid': _('Invalid data. Expected a dictionary, but got {datatype}.')
+ }
+
@property
def fields(self):
if not hasattr(self, '_fields'):
@@ -339,8 +344,11 @@ class Serializer(BaseSerializer):
return None
if not isinstance(data, dict):
+ message = self.error_messages['invalid'].format(
+ datatype=type(data).__name__
+ )
raise ValidationError({
- api_settings.NON_FIELD_ERRORS_KEY: ['Invalid data']
+ api_settings.NON_FIELD_ERRORS_KEY: [message]
})
value = self.to_internal_value(data)
diff --git a/tests/test_validation.py b/tests/test_validation.py
index 4d64e6e1..1b6aa358 100644
--- a/tests/test_validation.py
+++ b/tests/test_validation.py
@@ -87,8 +87,11 @@ class TestAvoidValidation(TestCase):
def test_serializer_errors_has_only_invalid_data_error(self):
serializer = ValidationSerializer(data='invalid data')
self.assertFalse(serializer.is_valid())
- self.assertDictEqual(serializer.errors,
- {'non_field_errors': ['Invalid data']})
+ self.assertDictEqual(serializer.errors, {
+ 'non_field_errors': [
+ 'Invalid data. Expected a dictionary, but got unicode.'
+ ]
+ })
# regression tests for issue: 1493