Loading django/http/response.py +6 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,12 @@ class HttpResponseBase(six.Iterator): # These methods partially implement a stream-like object interface. # See https://docs.python.org/library/io.html#io.IOBase def readable(self): return False def seekable(self): return False def writable(self): return False Loading docs/ref/request-response.txt +14 −0 Original line number Diff line number Diff line Loading @@ -807,6 +807,20 @@ Methods Returns the value of :attr:`HttpResponse.content`. This method makes an :class:`HttpResponse` instance a stream-like object. .. method:: HttpResponse.readable() .. versionadded:: 1.10 Always ``False``. This method makes an :class:`HttpResponse` instance a stream-like object. .. method:: HttpResponse.seekable() .. versionadded:: 1.10 Always ``False``. This method makes an :class:`HttpResponse` instance a stream-like object. .. method:: HttpResponse.writable() Always ``True``. This method makes an :class:`HttpResponse` instance a Loading docs/releases/1.10.txt +5 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,11 @@ Requests and Responses * Added ``request.user`` to the debug view. * Added :class:`~django.http.HttpResponse` methods :meth:`~django.http.HttpResponse.readable()` and :meth:`~django.http.HttpResponse.seekable()` to make an instance a stream-like object and allow wrapping it with :py:class:`io.TextIOWrapper`. Serialization ^^^^^^^^^^^^^ Loading tests/responses/tests.py +9 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ from __future__ import unicode_literals import io from django.conf import settings from django.http import HttpResponse from django.http.response import HttpResponseBase Loading Loading @@ -112,3 +114,10 @@ class HttpResponseTests(SimpleTestCase): response = HttpResponse(content="Café :)".encode(UTF8), status=201) expected = '<HttpResponse status_code=201, "text/html; charset=utf-8">' self.assertEqual(repr(response), expected) def test_wrap_textiowrapper(self): content = "Café :)" r = HttpResponse() with io.TextIOWrapper(r, UTF8) as buf: buf.write(content) self.assertEqual(r.content, content.encode(UTF8)) Loading
django/http/response.py +6 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,12 @@ class HttpResponseBase(six.Iterator): # These methods partially implement a stream-like object interface. # See https://docs.python.org/library/io.html#io.IOBase def readable(self): return False def seekable(self): return False def writable(self): return False Loading
docs/ref/request-response.txt +14 −0 Original line number Diff line number Diff line Loading @@ -807,6 +807,20 @@ Methods Returns the value of :attr:`HttpResponse.content`. This method makes an :class:`HttpResponse` instance a stream-like object. .. method:: HttpResponse.readable() .. versionadded:: 1.10 Always ``False``. This method makes an :class:`HttpResponse` instance a stream-like object. .. method:: HttpResponse.seekable() .. versionadded:: 1.10 Always ``False``. This method makes an :class:`HttpResponse` instance a stream-like object. .. method:: HttpResponse.writable() Always ``True``. This method makes an :class:`HttpResponse` instance a Loading
docs/releases/1.10.txt +5 −0 Original line number Diff line number Diff line Loading @@ -174,6 +174,11 @@ Requests and Responses * Added ``request.user`` to the debug view. * Added :class:`~django.http.HttpResponse` methods :meth:`~django.http.HttpResponse.readable()` and :meth:`~django.http.HttpResponse.seekable()` to make an instance a stream-like object and allow wrapping it with :py:class:`io.TextIOWrapper`. Serialization ^^^^^^^^^^^^^ Loading
tests/responses/tests.py +9 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,8 @@ from __future__ import unicode_literals import io from django.conf import settings from django.http import HttpResponse from django.http.response import HttpResponseBase Loading Loading @@ -112,3 +114,10 @@ class HttpResponseTests(SimpleTestCase): response = HttpResponse(content="Café :)".encode(UTF8), status=201) expected = '<HttpResponse status_code=201, "text/html; charset=utf-8">' self.assertEqual(repr(response), expected) def test_wrap_textiowrapper(self): content = "Café :)" r = HttpResponse() with io.TextIOWrapper(r, UTF8) as buf: buf.write(content) self.assertEqual(r.content, content.encode(UTF8))