Fixed #21740 -- Stopped using mutable default arguments in test client

Thanks Denver Coneybeare for the report and initial patch, and
Atala for another patch.
This commit is contained in:
Claude Paroz 2014-01-16 17:44:20 +01:00
parent a6e3fb80b0
commit 2a31d00933
2 changed files with 12 additions and 12 deletions

View File

@ -276,29 +276,29 @@ class RequestFactory(object):
path = path.encode('utf-8').decode('iso-8859-1') path = path.encode('utf-8').decode('iso-8859-1')
return path return path
def get(self, path, data={}, secure=False, **extra): def get(self, path, data=None, secure=False, **extra):
"Construct a GET request." "Construct a GET request."
r = { r = {
'QUERY_STRING': urlencode(data, doseq=True), 'QUERY_STRING': urlencode(data or {}, doseq=True),
} }
r.update(extra) r.update(extra)
return self.generic('GET', path, secure=secure, **r) return self.generic('GET', path, secure=secure, **r)
def post(self, path, data={}, content_type=MULTIPART_CONTENT, def post(self, path, data=None, content_type=MULTIPART_CONTENT,
secure=False, **extra): secure=False, **extra):
"Construct a POST request." "Construct a POST request."
post_data = self._encode_data(data, content_type) post_data = self._encode_data(data or {}, content_type)
return self.generic('POST', path, post_data, content_type, return self.generic('POST', path, post_data, content_type,
secure=secure, **extra) secure=secure, **extra)
def head(self, path, data={}, secure=False, **extra): def head(self, path, data=None, secure=False, **extra):
"Construct a HEAD request." "Construct a HEAD request."
r = { r = {
'QUERY_STRING': urlencode(data, doseq=True), 'QUERY_STRING': urlencode(data or {}, doseq=True),
} }
r.update(extra) r.update(extra)
return self.generic('HEAD', path, secure=secure, **r) return self.generic('HEAD', path, secure=secure, **r)
@ -460,7 +460,7 @@ class Client(RequestFactory):
signals.template_rendered.disconnect(dispatch_uid=signal_uid) signals.template_rendered.disconnect(dispatch_uid=signal_uid)
got_request_exception.disconnect(dispatch_uid="request-exception") got_request_exception.disconnect(dispatch_uid="request-exception")
def get(self, path, data={}, follow=False, secure=False, **extra): def get(self, path, data=None, follow=False, secure=False, **extra):
""" """
Requests a response from the server using GET. Requests a response from the server using GET.
""" """
@ -470,7 +470,7 @@ class Client(RequestFactory):
response = self._handle_redirects(response, **extra) response = self._handle_redirects(response, **extra)
return response return response
def post(self, path, data={}, content_type=MULTIPART_CONTENT, def post(self, path, data=None, content_type=MULTIPART_CONTENT,
follow=False, secure=False, **extra): follow=False, secure=False, **extra):
""" """
Requests a response from the server using POST. Requests a response from the server using POST.
@ -482,7 +482,7 @@ class Client(RequestFactory):
response = self._handle_redirects(response, **extra) response = self._handle_redirects(response, **extra)
return response return response
def head(self, path, data={}, follow=False, secure=False, **extra): def head(self, path, data=None, follow=False, secure=False, **extra):
""" """
Request a response from the server using HEAD. Request a response from the server using HEAD.
""" """

View File

@ -129,7 +129,7 @@ Use the ``django.test.Client`` class to make requests.
Once you have a ``Client`` instance, you can call any of the following Once you have a ``Client`` instance, you can call any of the following
methods: methods:
.. method:: Client.get(path, data={}, follow=False, secure=False, **extra) .. method:: Client.get(path, data=None, follow=False, secure=False, **extra)
.. versionadded:: 1.7 .. versionadded:: 1.7
@ -192,7 +192,7 @@ Use the ``django.test.Client`` class to make requests.
If you set ``secure`` to ``True`` the client will emulate an HTTPS If you set ``secure`` to ``True`` the client will emulate an HTTPS
request. request.
.. method:: Client.post(path, data={}, content_type=MULTIPART_CONTENT, follow=False, secure=False, **extra) .. method:: Client.post(path, data=None, content_type=MULTIPART_CONTENT, follow=False, secure=False, **extra)
Makes a POST request on the provided ``path`` and returns a Makes a POST request on the provided ``path`` and returns a
``Response`` object, which is documented below. ``Response`` object, which is documented below.
@ -269,7 +269,7 @@ Use the ``django.test.Client`` class to make requests.
If you set ``secure`` to ``True`` the client will emulate an HTTPS If you set ``secure`` to ``True`` the client will emulate an HTTPS
request. request.
.. method:: Client.head(path, data={}, follow=False, secure=False, **extra) .. method:: Client.head(path, data=None, follow=False, secure=False, **extra)
Makes a HEAD request on the provided ``path`` and returns a Makes a HEAD request on the provided ``path`` and returns a
``Response`` object. This method works just like :meth:`Client.get`, ``Response`` object. This method works just like :meth:`Client.get`,