mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-11-04 09:57:55 +03:00 
			
		
		
		
	parser_context includes view, request, args, kwargs.  (Not meta and upload_handlers)
				
					
				
			Consistency with renderer API.
This commit is contained in:
		
							parent
							
								
									99d48f9003
								
							
						
					
					
						commit
						4231995fbd
					
				| 
						 | 
				
			
			@ -103,7 +103,9 @@ A stream-like object representing the body of the request.
 | 
			
		|||
 | 
			
		||||
### parser_context
 | 
			
		||||
 | 
			
		||||
If supplied, this argument will be a dictionary containing any additional context that may be required to parse the request content.  By default it includes the keys `'upload_handlers'` and `'meta'`, which contain the values of the `request.upload_handlers` and `request.meta` properties.
 | 
			
		||||
Optional.  If supplied, this argument will be a dictionary containing any additional context that may be required to parse the request content.
 | 
			
		||||
 | 
			
		||||
By default this will include the following keys: `view`, `request`, `args`, `kwargs`.
 | 
			
		||||
 | 
			
		||||
## Example
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -162,11 +162,14 @@ The request data, as set by the `Response()` instantiation.
 | 
			
		|||
 | 
			
		||||
### `media_type=None`
 | 
			
		||||
 | 
			
		||||
Optional. If provided, this is the accepted media type, as determined by the content negotiation stage.  Depending on the client's `Accept:` header, this may be more specific than the renderer's `media_type` attribute, and may include media type parameters.  For example `"application/json; nested=true"`.
 | 
			
		||||
Optional. If provided, this is the accepted media type, as determined by the content negotiation stage.
 | 
			
		||||
 | 
			
		||||
Depending on the client's `Accept:` header, this may be more specific than the renderer's `media_type` attribute, and may include media type parameters.  For example `"application/json; nested=true"`.
 | 
			
		||||
 | 
			
		||||
### `renderer_context=None`
 | 
			
		||||
 | 
			
		||||
Optional. If provided, this is a dictionary of contextual information provided by the view.
 | 
			
		||||
 | 
			
		||||
By default this will include the following keys: `view`, `request`, `response`, `args`, `kwargs`.
 | 
			
		||||
 | 
			
		||||
## Example
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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):
 | 
			
		||||
        """
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user