This commit is contained in:
Attila-Mihaly Balazs 2017-05-30 20:07:14 +00:00 committed by GitHub
commit 7736930fca
3 changed files with 12 additions and 4 deletions

View File

@ -53,6 +53,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.
@ -89,7 +92,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)

View File

@ -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

View File

@ -376,6 +376,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):
""" """