From dd680d7a0ae997f2e562db383f23b56624e7ea98 Mon Sep 17 00:00:00 2001 From: Alen Mujezinovic Date: Fri, 27 Jan 2012 12:56:05 +0000 Subject: [PATCH] Added get_renderers method to ResponseMixin --- djangorestframework/mixins.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/djangorestframework/mixins.py b/djangorestframework/mixins.py index 7f0870f85..70492d840 100644 --- a/djangorestframework/mixins.py +++ b/djangorestframework/mixins.py @@ -183,7 +183,7 @@ class RequestMixin(object): return parser.parse(stream) raise ErrorResponse(status.HTTP_415_UNSUPPORTED_MEDIA_TYPE, - {'error': 'Unsupported media type in request \'%s\'.' % + {'error': 'Unsupported media type in request \'%s\'.' % content_type}) @property @@ -222,6 +222,13 @@ class ResponseMixin(object): Should be a tuple/list of classes as described in the :mod:`renderers` module. """ + def get_renderers(self): + """ + Return an iterable of available renderers. Override if you want to change + this list at runtime, say depending on what settings you have enabled. + """ + return self.renderers + # TODO: wrap this behavior around dispatch(), ensuring it works # out of the box with existing Django classes that use render_to_response. def render(self, response): @@ -283,7 +290,7 @@ class ResponseMixin(object): # attempting more specific media types first # NB. The inner loop here isn't as bad as it first looks :) # Worst case is we're looping over len(accept_list) * len(self.renderers) - renderers = [renderer_cls(self) for renderer_cls in self.renderers] + renderers = [renderer_cls(self) for renderer_cls in self.get_renderers()] for accepted_media_type_lst in order_by_precedence(accept_list): for renderer in renderers: