mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-10 19:56:59 +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