This commit is contained in:
Ian Stapleton Cordasco 2018-01-19 07:57:13 +00:00 committed by GitHub
commit 57b43a6a1d
2 changed files with 11 additions and 2 deletions

View File

@ -153,6 +153,12 @@ class Request(object):
def __init__(self, request, parsers=None, authenticators=None, def __init__(self, request, parsers=None, authenticators=None,
negotiator=None, parser_context=None): negotiator=None, parser_context=None):
# If we're being passed our own Request object, unwrap the underlying
# HttpRequest. This allows for some backwards compatibilty to 3.7.3
# for select users who carefully reuse ViewSets.
if isinstance(request, Request):
request = request._request
assert isinstance(request, HttpRequest), ( assert isinstance(request, HttpRequest), (
'The `request` argument must be an instance of ' 'The `request` argument must be an instance of '
'`django.http.HttpRequest`, not `{}.{}`.' '`django.http.HttpRequest`, not `{}.{}`.'

View File

@ -33,10 +33,13 @@ class TestInitializer(TestCase):
message = ( message = (
'The `request` argument must be an instance of ' 'The `request` argument must be an instance of '
'`django.http.HttpRequest`, not `rest_framework.request.Request`.' '`django.http.HttpRequest`, not `NoneType`.'
) )
with self.assertRaisesMessage(AssertionError, message): with self.assertRaisesMessage(AssertionError, message):
Request(request) Request(None)
other_request = Request(request)
assert other_request._request is request._request
class PlainTextParser(BaseParser): class PlainTextParser(BaseParser):