aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/request.py
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework/request.py')
-rw-r--r--rest_framework/request.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/rest_framework/request.py b/rest_framework/request.py
index 47c009b2..3e2fbd88 100644
--- a/rest_framework/request.py
+++ b/rest_framework/request.py
@@ -11,7 +11,9 @@ The wrapped request then offers a richer API, in particular :
"""
from __future__ import unicode_literals
from django.conf import settings
+from django.http import QueryDict
from django.http.multipartparser import parse_header
+from django.utils.datastructures import MultiValueDict
from rest_framework import HTTP_HEADER_ENCODING
from rest_framework import exceptions
from rest_framework.compat import BytesIO
@@ -44,10 +46,11 @@ def clone_request(request, method):
Internal helper method to clone a request, replacing with a different
HTTP method. Used for checking permissions against other methods.
"""
- ret = Request(request._request,
- request.parsers,
- request.authenticators,
- request.parser_context)
+ ret = Request(request=request._request,
+ parsers=request.parsers,
+ authenticators=request.authenticators,
+ negotiator=request.negotiator,
+ parser_context=request.parser_context)
ret._data = request._data
ret._files = request._files
ret._content_type = request._content_type
@@ -57,6 +60,8 @@ def clone_request(request, method):
ret._user = request._user
if hasattr(request, '_auth'):
ret._auth = request._auth
+ if hasattr(request, '_authenticator'):
+ ret._authenticator = request._authenticator
return ret
@@ -294,7 +299,9 @@ class Request(object):
media_type = self.content_type
if stream is None or media_type is None:
- return (None, None)
+ empty_data = QueryDict('', self._request._encoding)
+ empty_files = MultiValueDict()
+ return (empty_data, empty_files)
parser = self.negotiator.select_parser(self, self.parsers)
@@ -308,7 +315,8 @@ class Request(object):
try:
return (parsed.data, parsed.files)
except AttributeError:
- return (parsed, None)
+ empty_files = MultiValueDict()
+ return (parsed, empty_files)
def _authenticate(self):
"""