Loading django/http/response.py +5 −0 Original line number Diff line number Diff line Loading @@ -261,6 +261,11 @@ class HttpResponseBase(six.Iterator): if httponly: self.cookies[key]['httponly'] = True def setdefault(self, key, value): """Sets a header unless it has already been set.""" if key not in self: self[key] = value def set_signed_cookie(self, key, value, salt='', **kwargs): value = signing.get_cookie_signer(salt=key + salt).sign(value) return self.set_cookie(key, value, **kwargs) Loading docs/ref/request-response.txt +6 −0 Original line number Diff line number Diff line Loading @@ -708,6 +708,12 @@ Methods Returns ``True`` or ``False`` based on a case-insensitive check for a header with the given name. .. method:: HttpResponse.setdefault(header, value) .. versionadded:: 1.8 Sets a header unless it has already been set. .. method:: HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False) Sets a cookie. The parameters are the same as in the Loading docs/releases/1.8.txt +4 −0 Original line number Diff line number Diff line Loading @@ -483,6 +483,10 @@ Requests and Responses like :meth:`~django.http.HttpResponse.getvalue` so that instances can be used as stream objects. * The new :meth:`HttpResponse.setdefault() <django.http.HttpResponse.setdefault>` method allows setting a header unless it has already been set. Tests ^^^^^ Loading tests/responses/tests.py +14 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,20 @@ class HttpResponseBaseTests(SimpleTestCase): with self.assertRaisesMessage(IOError, 'This HttpResponseBase instance cannot tell its position'): r.tell() def test_setdefault(self): """ HttpResponseBase.setdefault() should not change an existing header and should be case insensitive. """ r = HttpResponseBase() r['Header'] = 'Value' r.setdefault('header', 'changed') self.assertEqual(r['header'], 'Value') r.setdefault('x-header', 'DefaultValue') self.assertEqual(r['X-Header'], 'DefaultValue') class HttpResponseTests(SimpleTestCase): def test_status_code(self): Loading Loading
django/http/response.py +5 −0 Original line number Diff line number Diff line Loading @@ -261,6 +261,11 @@ class HttpResponseBase(six.Iterator): if httponly: self.cookies[key]['httponly'] = True def setdefault(self, key, value): """Sets a header unless it has already been set.""" if key not in self: self[key] = value def set_signed_cookie(self, key, value, salt='', **kwargs): value = signing.get_cookie_signer(salt=key + salt).sign(value) return self.set_cookie(key, value, **kwargs) Loading
docs/ref/request-response.txt +6 −0 Original line number Diff line number Diff line Loading @@ -708,6 +708,12 @@ Methods Returns ``True`` or ``False`` based on a case-insensitive check for a header with the given name. .. method:: HttpResponse.setdefault(header, value) .. versionadded:: 1.8 Sets a header unless it has already been set. .. method:: HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False) Sets a cookie. The parameters are the same as in the Loading
docs/releases/1.8.txt +4 −0 Original line number Diff line number Diff line Loading @@ -483,6 +483,10 @@ Requests and Responses like :meth:`~django.http.HttpResponse.getvalue` so that instances can be used as stream objects. * The new :meth:`HttpResponse.setdefault() <django.http.HttpResponse.setdefault>` method allows setting a header unless it has already been set. Tests ^^^^^ Loading
tests/responses/tests.py +14 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,20 @@ class HttpResponseBaseTests(SimpleTestCase): with self.assertRaisesMessage(IOError, 'This HttpResponseBase instance cannot tell its position'): r.tell() def test_setdefault(self): """ HttpResponseBase.setdefault() should not change an existing header and should be case insensitive. """ r = HttpResponseBase() r['Header'] = 'Value' r.setdefault('header', 'changed') self.assertEqual(r['header'], 'Value') r.setdefault('x-header', 'DefaultValue') self.assertEqual(r['X-Header'], 'DefaultValue') class HttpResponseTests(SimpleTestCase): def test_status_code(self): Loading