Basic support for format suffixes

This commit is contained in:
Tom Christie 2012-09-07 11:12:24 +01:00
parent 071e7d72cd
commit 1608583eaa
2 changed files with 9 additions and 2 deletions

View File

@ -41,7 +41,8 @@ class Response(SimpleTemplateResponse):
_ACCEPT_QUERY_PARAM = api_settings.URL_ACCEPT_OVERRIDE _ACCEPT_QUERY_PARAM = api_settings.URL_ACCEPT_OVERRIDE
_IGNORE_IE_ACCEPT_HEADER = True _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, # First argument taken by `SimpleTemplateResponse.__init__` is template_name,
# which we don't need # which we don't need
super(Response, self).__init__(None, status=status) super(Response, self).__init__(None, status=status)
@ -52,6 +53,7 @@ class Response(SimpleTemplateResponse):
self.view = view self.view = view
self.request = request self.request = request
self.renderers = renderers self.renderers = renderers
self.format = format
def get_renderers(self): def get_renderers(self):
""" """
@ -62,6 +64,9 @@ class Response(SimpleTemplateResponse):
else: else:
renderer_classes = self.renderers 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] return [cls(self.view) for cls in renderer_classes]
@property @property

View File

@ -203,7 +203,7 @@ class APIView(_View):
""" """
return Request(request, parsers=self.parsers, authentication=self.authentication) 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. Returns the final response object.
""" """
@ -211,6 +211,8 @@ class APIView(_View):
response.view = self response.view = self
response.request = request response.request = request
response.renderers = self.renderers 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(): for key, value in self.headers.items():
response[key] = value response[key] = value