mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-27 08:29:59 +03:00
processing only str (#8077)
This commit is contained in:
parent
2aab63d7a5
commit
bfe9448358
|
@ -153,10 +153,13 @@ class ValidationError(APIException):
|
|||
|
||||
# For validation failures, we may collect many errors together,
|
||||
# so the details should always be coerced to a list if not already.
|
||||
if isinstance(detail, tuple) or isinstance(detail, list):
|
||||
detail = [msg % params for msg in detail]
|
||||
elif not isinstance(detail, dict):
|
||||
detail = [detail % params]
|
||||
# For str or list of str add params
|
||||
if isinstance(detail, str):
|
||||
detail = [detail % params]
|
||||
elif isinstance(detail, list) or isinstance(detail, tuple):
|
||||
detail = [msg % params if isinstance(msg, str) else msg for msg in detail]
|
||||
elif not isinstance(detail, dict) and not isinstance(detail, list):
|
||||
detail = [detail]
|
||||
self.detail = _get_error_details(detail, code)
|
||||
|
||||
|
||||
|
|
|
@ -110,21 +110,21 @@ class TestValidationErrorConvertsTuplesToLists(TestCase):
|
|||
assert str(error.detail[0]) == 'message1'
|
||||
assert str(error.detail[1]) == 'message2'
|
||||
|
||||
|
||||
class TestvalidationErrorWithDjangoStyle(TestCase):
|
||||
def test_validation_error_details(self):
|
||||
error = ValidationError('Invalid value: %(value)s', params={'value': '42'})
|
||||
s = str(error.detail)
|
||||
assert str(error.detail[0]) == 'Invalid value: 42'
|
||||
|
||||
|
||||
def test_validation_error_details_tuple(self):
|
||||
error = ValidationError(detail=('Invalid value: %(value1)s', 'Invalid value: %(value2)s'), params={'value1': '42', 'value2':'43'})
|
||||
error = ValidationError(detail=('Invalid value: %(value1)s', 'Invalid value: %(value2)s'), params={'value1': '42', 'value2': '43'})
|
||||
assert isinstance(error.detail, list)
|
||||
assert len(error.detail) == 2
|
||||
assert str(error.detail[0]) == 'Invalid value: 42'
|
||||
assert str(error.detail[1]) == 'Invalid value: 43'
|
||||
|
||||
def test_validation_error_details_list(self):
|
||||
error = ValidationError(detail=['Invalid value: %(value1)s', 'Invalid value: %(value2)s'], params={'value1': '42', 'value2':'43'})
|
||||
error = ValidationError(detail=['Invalid value: %(value1)s', 'Invalid value: %(value2)s'], params={'value1': '42', 'value2': '43'})
|
||||
assert isinstance(error.detail, list)
|
||||
assert len(error.detail) == 2
|
||||
assert str(error.detail[0]) == 'Invalid value: 42'
|
||||
|
|
Loading…
Reference in New Issue
Block a user