Commit 74151765 authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Simplified description of HttpResponse(<iterator>)

Related to 8b9b8d3b.
parent acd7b34a
Loading
Loading
Loading
Loading
+5 −21
Original line number Diff line number Diff line
@@ -555,28 +555,12 @@ file-like object::
Passing iterators
~~~~~~~~~~~~~~~~~

Finally, you can pass ``HttpResponse`` an iterator rather than strings. If you
use this technique, the iterator should return strings.
Finally, you can pass ``HttpResponse`` an iterator rather than strings.
``HttpResponse`` will consume the iterator immediately, store its content as a
string, and discard it.

Passing an iterator as content to :class:`HttpResponse` creates a
streaming response if (and only if) no middleware accesses the
:attr:`HttpResponse.content` attribute before the response is returned.

.. versionchanged:: 1.5

    This technique is fragile and was deprecated in Django 1.5. If you need the
    response to be streamed from the iterator to the client, you should use the
    :class:`StreamingHttpResponse` class instead.

    As of Django 1.7, when :class:`HttpResponse` is instantiated with an
    iterator, it will consume it immediately, store the response content as a
    string, and discard the iterator.

.. versionchanged:: 1.5

    You can now use :class:`HttpResponse` as a file-like object even if it was
    instantiated with an iterator. Django will consume and save the content of
    the iterator on first access.
If you need the response to be streamed from the iterator to the client, you
must use the :class:`StreamingHttpResponse` class instead.

Setting header fields
~~~~~~~~~~~~~~~~~~~~~