From 4a872050b02f5b7d1c04eba134a4ffbe47df31bd Mon Sep 17 00:00:00 2001 From: Luke Burden Date: Mon, 19 Nov 2018 13:14:30 -0800 Subject: [PATCH] Allow contextual overriding of `JSONRenderer.encoder_class` --- rest_framework/renderers.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index fb0dfcbd8..c6cb82e30 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -82,6 +82,9 @@ class JSONRenderer(BaseRenderer): # E.g. If we're being called by the BrowsableAPIRenderer. return renderer_context.get('indent', None) + def get_encoder_class(self, accepted_media_type, renderer_context): + return self.encoder_class + def render(self, data, accepted_media_type=None, renderer_context=None): """ Render `data` into JSON, returning a bytestring. @@ -98,7 +101,7 @@ class JSONRenderer(BaseRenderer): separators = INDENT_SEPARATORS ret = json.dumps( - data, cls=self.encoder_class, + data, cls=self.get_encoder_class(accepted_media_type, renderer_context), indent=indent, ensure_ascii=self.ensure_ascii, separators=separators )