Commit e83ff427 authored by Tim Graham's avatar Tim Graham
Browse files

Fixed #20459 - Improved example for setting HTTP header fields.

Thanks Jérémie Blaser.
parent 6786920f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -111,6 +111,7 @@ answer newbie questions, and generally made Django that much better:
    Paul Bissex <http://e-scribe.com/>
    Loïc Bistuer <loic.bistuer@sixmedia.com>
    Simon Blanchard
    Jérémie Blaser <blaserje@gmail.com>
    Craig Blaszczyk <masterjakul@gmail.com>
    David Blewett <david@dawninglight.net>
    Artem Gnilov <boobsd@gmail.com>
+9 −2
Original line number Diff line number Diff line
@@ -584,12 +584,19 @@ Setting header fields
To set or remove a header field in your response, treat it like a dictionary::

    >>> response = HttpResponse()
    >>> response['Cache-Control'] = 'no-cache'
    >>> del response['Cache-Control']
    >>> response['Age'] = 120
    >>> del response['Age']

Note that unlike a dictionary, ``del`` doesn't raise ``KeyError`` if the header
field doesn't exist.

For setting the ``Cache-Control`` and ``Vary`` header fields, it is recommended
to use the :meth:`~django.utils.cache.patch_cache_control` and
:meth:`~django.utils.cache.patch_vary_headers` methods from
:mod:`django.utils.cache`, since these fields can have multiple, comma-separated
values. The "patch" methods ensure that other values, e.g. added by a
middleware, are not removed.

HTTP header fields cannot contain newlines. An attempt to set a header field
containing a newline character (CR or LF) will raise ``BadHeaderError``