Fix infinite recursion with deepcopy on Request (#8684)

This commit is contained in:
Markus Legner 2022-10-07 12:58:38 +02:00 committed by GitHub
parent c10f226622
commit d507cd851c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 1 deletions

View File

@ -413,7 +413,8 @@ class Request:
to proxy it to the underlying HttpRequest object.
"""
try:
return getattr(self._request, attr)
_request = self.__getattribute__("_request")
return getattr(_request, attr)
except AttributeError:
return self.__getattribute__(attr)

View File

@ -1,6 +1,7 @@
"""
Tests for content parsing, and form-overloaded content parsing.
"""
import copy
import os.path
import tempfile
@ -344,3 +345,10 @@ class TestHttpRequest(TestCase):
# ensure that request stream was consumed by form parser
assert request.content_type.startswith('multipart/form-data')
assert response.data == {'a': ['b']}
class TestDeepcopy(TestCase):
def test_deepcopy_works(self):
request = Request(factory.get('/', secure=False))
copy.deepcopy(request)