diff --git a/djangorestframework/response.py b/djangorestframework/response.py index 71b08a04f..08e14199a 100644 --- a/djangorestframework/response.py +++ b/djangorestframework/response.py @@ -41,7 +41,8 @@ class Response(SimpleTemplateResponse): _ACCEPT_QUERY_PARAM = api_settings.URL_ACCEPT_OVERRIDE _IGNORE_IE_ACCEPT_HEADER = True - def __init__(self, content=None, status=None, headers=None, view=None, request=None, renderers=None): + def __init__(self, content=None, status=None, headers=None, view=None, + request=None, renderers=None, format=None): # First argument taken by `SimpleTemplateResponse.__init__` is template_name, # which we don't need super(Response, self).__init__(None, status=status) @@ -52,6 +53,7 @@ class Response(SimpleTemplateResponse): self.view = view self.request = request self.renderers = renderers + self.format = format def get_renderers(self): """ @@ -62,6 +64,9 @@ class Response(SimpleTemplateResponse): else: renderer_classes = self.renderers + if self.format: + return [cls(self.view) for cls in renderer_classes + if cls.format == self.format] return [cls(self.view) for cls in renderer_classes] @property diff --git a/djangorestframework/views.py b/djangorestframework/views.py index 43feee9cd..1679f1613 100644 --- a/djangorestframework/views.py +++ b/djangorestframework/views.py @@ -203,7 +203,7 @@ class APIView(_View): """ return Request(request, parsers=self.parsers, authentication=self.authentication) - def finalize_response(self, request, response, *args, **kargs): + def finalize_response(self, request, response, *args, **kwargs): """ Returns the final response object. """ @@ -211,6 +211,8 @@ class APIView(_View): response.view = self response.request = request response.renderers = self.renderers + if api_settings.FORMAT_SUFFIX_KWARG: + response.format = kwargs.get(api_settings.FORMAT_SUFFIX_KWARG, None) for key, value in self.headers.items(): response[key] = value