diff options
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/parsers.py | 6 | ||||
| -rw-r--r-- | rest_framework/request.py | 9 | ||||
| -rw-r--r-- | rest_framework/views.py | 15 | 
3 files changed, 15 insertions, 15 deletions
| diff --git a/rest_framework/parsers.py b/rest_framework/parsers.py index 6287b842..7e13c3d8 100644 --- a/rest_framework/parsers.py +++ b/rest_framework/parsers.py @@ -119,8 +119,10 @@ class MultiPartParser(BaseParser):          `.files` will be a `QueryDict` containing all the form files.          """          parser_context = parser_context or {} -        meta = parser_context['meta'] -        upload_handlers = parser_context['upload_handlers'] +        request = parser_context['request'] +        meta = request.META +        upload_handlers = request.upload_handlers +          try:              parser = DjangoMultiPartParser(meta, stream, upload_handlers)              data, files = parser.parse() diff --git a/rest_framework/request.py b/rest_framework/request.py index 6f9cf09a..d739d27d 100644 --- a/rest_framework/request.py +++ b/rest_framework/request.py @@ -88,17 +88,12 @@ class Request(object):          self._stream = Empty          if self.parser_context is None: -            self.parser_context = self._default_parser_context(request) +            self.parser_context = {} +        self.parser_context['request'] = self      def _default_negotiator(self):          return api_settings.DEFAULT_CONTENT_NEGOTIATION() -    def _default_parser_context(self, request): -        return { -            'upload_handlers': request.upload_handlers, -            'meta': request.META, -        } -      @property      def method(self):          """ diff --git a/rest_framework/views.py b/rest_framework/views.py index 1be2593c..066c0bb9 100644 --- a/rest_framework/views.py +++ b/rest_framework/views.py @@ -161,9 +161,12 @@ class APIView(View):          Returns a dict that is passed through to Parser.parse(),          as the `parser_context` keyword argument.          """ +        # Note: Additionally `request` will also be added to the context +        #       by the Request object.          return { -            'upload_handlers': http_request.upload_handlers, -            'meta': http_request.META, +            'view': self, +            'args': getattr(self, 'args', ()), +            'kwargs': getattr(self, 'kwargs', {})          }      def get_renderer_context(self): @@ -171,13 +174,13 @@ class APIView(View):          Returns a dict that is passed through to Renderer.render(),          as the `renderer_context` keyword argument.          """ -        # Note: Additionally 'response' will also be set on the context, +        # Note: Additionally 'response' will also be added to the context,          #       by the Response object.          return {              'view': self, -            'request': self.request, -            'args': self.args, -            'kwargs': self.kwargs +            'args': getattr(self, 'args', ()), +            'kwargs': getattr(self, 'kwargs', {}), +            'request': getattr(self, 'request', None)          }      # API policy instantiation methods | 
