diff options
| -rw-r--r-- | rest_framework/viewsets.py | 13 | 
1 files changed, 13 insertions, 0 deletions
| diff --git a/rest_framework/viewsets.py b/rest_framework/viewsets.py index a54467d7..0eb3e86d 100644 --- a/rest_framework/viewsets.py +++ b/rest_framework/viewsets.py @@ -59,6 +59,10 @@ class ViewSetMixin(object):          def view(request, *args, **kwargs):              self = cls(**initkwargs) +            # We also store the mapping of request methods to actions, +            # so that we can later set the action attribute. +            # eg. `self.action = 'list'` on an incoming GET request. +            self.action_map = actions              # Bind methods to actions              # This is the bit that's different to a standard view @@ -87,6 +91,15 @@ class ViewSetMixin(object):          view.suffix = initkwargs.get('suffix', None)          return view +    def initialize_request(self, request, *args, **kargs): +        """ +        Set the `.action` attribute on the view, +        depending on the request method. +        """ +        request = super(ViewSetMixin, self).initialize_request(request, *args, **kargs) +        self.action = self.action_map.get(request.method.lower()) +        return request +  class ViewSet(ViewSetMixin, views.APIView):      """ | 
