diff options
| author | Benoit C | 2012-01-09 21:09:38 +0100 | 
|---|---|---|
| committer | Benoit C | 2012-01-10 00:04:10 +0100 | 
| commit | 4ab67e789e78bb5579545d8e0df2389994a72391 (patch) | |
| tree | 363ff8130864d8b7be46076f6d04ad6e28823854 /djangorestframework/views.py | |
| parent | e712ab0ba193e22e121fcd56dfea166bd84f57ed (diff) | |
| download | django-rest-framework-4ab67e789e78bb5579545d8e0df2389994a72391.tar.bz2 | |
Introduce a final methods in View class
Diffstat (limited to 'djangorestframework/views.py')
| -rw-r--r-- | djangorestframework/views.py | 26 | 
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):      """  | 
