aboutsummaryrefslogtreecommitdiffstats
path: root/djangorestframework/views.py
diff options
context:
space:
mode:
authorBenoit C2012-01-09 21:09:38 +0100
committerBenoit C2012-01-10 00:04:10 +0100
commit4ab67e789e78bb5579545d8e0df2389994a72391 (patch)
tree363ff8130864d8b7be46076f6d04ad6e28823854 /djangorestframework/views.py
parente712ab0ba193e22e121fcd56dfea166bd84f57ed (diff)
downloaddjango-rest-framework-4ab67e789e78bb5579545d8e0df2389994a72391.tar.bz2
Introduce a final methods in View class
Diffstat (limited to 'djangorestframework/views.py')
-rw-r--r--djangorestframework/views.py26
1 files changed, 14 insertions, 12 deletions
diff --git a/djangorestframework/views.py b/djangorestframework/views.py
index 4606e50b..9241c993 100644
--- a/djangorestframework/views.py
+++ b/djangorestframework/views.py
@@ -154,19 +154,8 @@ class View(ResourceMixin, RequestMixin, ResponseMixin, AuthMixin, DjangoView):
except ErrorResponse, exc:
response = exc.response
- # Always add these headers.
- #
- # TODO - this isn't actually the correct way to set the vary header,
- # also it's currently sub-optimal for HTTP caching - need to sort that out.
- response.headers['Allow'] = ', '.join(self.allowed_methods)
- response.headers['Vary'] = 'Authenticate, Accept'
-
- # merge with headers possibly set at some point in the view
- response.headers.update(self.headers)
-
set_script_prefix(orig_prefix)
-
- return self.render(response)
+ return self.final(request, response, *args, **kwargs)
def options(self, request, *args, **kwargs):
response_obj = {
@@ -183,6 +172,19 @@ class View(ResourceMixin, RequestMixin, ResponseMixin, AuthMixin, DjangoView):
response_obj['fields'] = field_name_types
return response_obj
+ def final(self, request, response, *args, **kargs):
+ """
+ Hook for any code that needs to run after everything else in the view.
+ """
+ # Always add these headers.
+ response.headers['Allow'] = ', '.join(self.allowed_methods)
+ # sample to allow caching using Vary http header
+ response.headers['Vary'] = 'Authenticate, Accept'
+
+ # merge with headers possibly set at some point in the view
+ response.headers.update(self.headers)
+ return self.render(response)
+
class ModelView(View):
"""