mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 04:50:12 +03:00
Serialize None as valid JSON
This commit is contained in:
parent
88c6c380c5
commit
1ce894d347
|
@ -51,6 +51,9 @@ class BaseRenderer(object):
|
||||||
raise NotImplementedError('Renderer class requires .render() to be implemented')
|
raise NotImplementedError('Renderer class requires .render() to be implemented')
|
||||||
|
|
||||||
|
|
||||||
|
_NULL_JSON = bytes('null'.encode('ascii'))
|
||||||
|
|
||||||
|
|
||||||
class JSONRenderer(BaseRenderer):
|
class JSONRenderer(BaseRenderer):
|
||||||
"""
|
"""
|
||||||
Renderer which serializes to JSON.
|
Renderer which serializes to JSON.
|
||||||
|
@ -87,7 +90,7 @@ class JSONRenderer(BaseRenderer):
|
||||||
Render `data` into JSON, returning a bytestring.
|
Render `data` into JSON, returning a bytestring.
|
||||||
"""
|
"""
|
||||||
if data is None:
|
if data is None:
|
||||||
return bytes()
|
return _NULL_JSON
|
||||||
|
|
||||||
renderer_context = renderer_context or {}
|
renderer_context = renderer_context or {}
|
||||||
indent = self.get_indent(accepted_media_type, renderer_context)
|
indent = self.get_indent(accepted_media_type, renderer_context)
|
||||||
|
|
|
@ -77,9 +77,10 @@ class Response(SimpleTemplateResponse):
|
||||||
)
|
)
|
||||||
return bytes(ret.encode(charset))
|
return bytes(ret.encode(charset))
|
||||||
|
|
||||||
if not ret:
|
if self.status_code == 204:
|
||||||
del self['Content-Type']
|
del self['Content-Type']
|
||||||
|
return bytes()
|
||||||
|
else:
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -360,6 +360,10 @@ class JSONRendererTests(TestCase):
|
||||||
content = renderer.render(obj, 'application/json; indent=2')
|
content = renderer.render(obj, 'application/json; indent=2')
|
||||||
self.assertEqual(strip_trailing_whitespace(content.decode('utf-8')), _indented_repr)
|
self.assertEqual(strip_trailing_whitespace(content.decode('utf-8')), _indented_repr)
|
||||||
|
|
||||||
|
def test_none(self):
|
||||||
|
ret = JSONRenderer().render(None)
|
||||||
|
self.assertEqual(None, json.loads(ret))
|
||||||
|
|
||||||
|
|
||||||
class UnicodeJSONRendererTests(TestCase):
|
class UnicodeJSONRendererTests(TestCase):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user