aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-09-07 11:12:24 +0100
committerTom Christie2012-09-07 11:12:24 +0100
commit1608583eaa5201340c554a767e8e48eecabe1f39 (patch)
tree8a388471c87568084ddb8c2106021e3cbd4d3102
parent071e7d72cd3d0f48bd3c0f8e22da319a9c4d4a09 (diff)
downloaddjango-rest-framework-1608583eaa5201340c554a767e8e48eecabe1f39.tar.bz2
Basic support for format suffixes
-rw-r--r--djangorestframework/response.py7
-rw-r--r--djangorestframework/views.py4
2 files changed, 9 insertions, 2 deletions
diff --git a/djangorestframework/response.py b/djangorestframework/response.py
index 71b08a04..08e14199 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 43feee9c..1679f161 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