aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/request.py
diff options
context:
space:
mode:
authorTom Christie2012-10-17 14:42:16 -0700
committerTom Christie2012-10-17 14:42:16 -0700
commitbbd3728da615f688da6a5276c6a898990275f32c (patch)
tree1566a18e4b4ad03a094c2c630b57d1530a9245d7 /rest_framework/request.py
parent6717d654d0bbfdfca4aaea84a5b4814c4e5f7567 (diff)
parentfb56f215ae50da0aebe99e05036ece259fd3e6f1 (diff)
downloaddjango-rest-framework-bbd3728da615f688da6a5276c6a898990275f32c.tar.bz2
Merge pull request #303 from tomchristie/parser_refactor
Parser refactor
Diffstat (limited to 'rest_framework/request.py')
-rw-r--r--rest_framework/request.py21
1 files changed, 10 insertions, 11 deletions
diff --git a/rest_framework/request.py b/rest_framework/request.py
index 6f9cf09a..b9d55de4 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):
"""
@@ -265,15 +260,19 @@ class Request(object):
May raise an `UnsupportedMediaType`, or `ParseError` exception.
"""
- if self.stream is None or self.content_type is None:
+ stream = self.stream
+ media_type = self.content_type
+
+ if stream is None or media_type is None:
return (None, None)
- parser = self.negotiator.select_parser(self.parsers, self.content_type)
+ parser = self.negotiator.select_parser(self.parsers, media_type)
if not parser:
- raise exceptions.UnsupportedMediaType(self.content_type)
+ raise exceptions.UnsupportedMediaType(media_type)
+
+ parsed = parser.parse(stream, media_type, self.parser_context)
- parsed = parser.parse(self.stream, self.parser_context)
# Parser classes may return the raw data, or a
# DataAndFiles object. Unpack the result as required.
try: