mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-29 17:39:48 +03:00
added ensure_ascii flag to JSONRenderer. UnicodeJSONRenderer now simply turns this to false
This commit is contained in:
parent
78e572f9bf
commit
94c9e82f4f
|
@ -48,6 +48,7 @@ class JSONRenderer(BaseRenderer):
|
||||||
media_type = 'application/json'
|
media_type = 'application/json'
|
||||||
format = 'json'
|
format = 'json'
|
||||||
encoder_class = encoders.JSONEncoder
|
encoder_class = encoders.JSONEncoder
|
||||||
|
ensure_ascii = True
|
||||||
|
|
||||||
def render(self, data, accepted_media_type=None, renderer_context=None):
|
def render(self, data, accepted_media_type=None, renderer_context=None):
|
||||||
"""
|
"""
|
||||||
|
@ -71,7 +72,7 @@ class JSONRenderer(BaseRenderer):
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
indent = None
|
indent = None
|
||||||
|
|
||||||
return json.dumps(data, cls=self.encoder_class, indent=indent)
|
return json.dumps(data, cls=self.encoder_class, indent=indent, ensure_ascii=self.ensure_ascii)
|
||||||
|
|
||||||
|
|
||||||
class JSONPRenderer(JSONRenderer):
|
class JSONPRenderer(JSONRenderer):
|
||||||
|
@ -546,34 +547,4 @@ class BrowsableAPIUnicodeRenderer(BrowsableAPIRenderer):
|
||||||
|
|
||||||
|
|
||||||
class UnicodeJSONRenderer(BaseRenderer):
|
class UnicodeJSONRenderer(BaseRenderer):
|
||||||
"""
|
ensure_ascii = False
|
||||||
Renderer which serializes to json.
|
|
||||||
"""
|
|
||||||
|
|
||||||
media_type = 'application/json'
|
|
||||||
format = 'json'
|
|
||||||
encoder_class = encoders.JSONEncoder
|
|
||||||
|
|
||||||
def render(self, data, accepted_media_type=None, renderer_context=None):
|
|
||||||
"""
|
|
||||||
Render `obj` into json.
|
|
||||||
"""
|
|
||||||
if data is None:
|
|
||||||
return ''
|
|
||||||
|
|
||||||
# If 'indent' is provided in the context, then pretty print the result.
|
|
||||||
# E.g. If we're being called by the BrowseableAPIRenderer.
|
|
||||||
renderer_context = renderer_context or {}
|
|
||||||
indent = renderer_context.get('indent', None)
|
|
||||||
|
|
||||||
if accepted_media_type:
|
|
||||||
# If the media type looks like 'application/json; indent=4',
|
|
||||||
# then pretty print the result.
|
|
||||||
base_media_type, params = parse_header(accepted_media_type.encode('ascii'))
|
|
||||||
indent = params.get('indent', indent)
|
|
||||||
try:
|
|
||||||
indent = max(min(int(indent), 8), 0)
|
|
||||||
except (ValueError, TypeError):
|
|
||||||
indent = None
|
|
||||||
|
|
||||||
return json.dumps(data, cls=self.encoder_class, indent=indent, ensure_ascii=False)
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user