summaryrefslogtreecommitdiff
path: root/docs/topics/http/decorators.txt
blob: 09ffecbdf90c64270c7bf0f3331c4fbd18b3a213 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
===============
View decorators
===============

.. module:: django.views.decorators.http

Django provides several decorators that can be applied to views to support
various HTTP features.

Allowed HTTP methods
====================

The following decorators in :mod:`django.views.decorators.http` can be used to
restrict access to views based on the request method.

.. function:: require_http_methods(request_method_list)

This decorator is used to ensure that a view only accepts particular request
methods. Usage::

    from django.views.decorators.http import require_http_methods

    @require_http_methods(["GET", "POST"])
    def my_view(request):
        # I can assume now that only GET or POST requests make it this far
        # ...
        pass

Note that request methods should be in uppercase.

.. function:: require_GET()

Decorator to require that a view only accept the GET method.

.. function:: require_POST()

Decorator to require that a view only accept the POST method.

Conditional view processing
===========================

The following decorators in :mod:`django.views.decorators.http` can be used to
control caching behavior on particular views.

.. function:: condition(etag_func=None, last_modified_func=None)

.. function:: etag(etag_func)

.. function:: last_modified(last_modified_func)

These decorators can be used to generate ``ETag`` and ``Last-Modified``
headers; see
:doc:`conditional view processing </topics/conditional-view-processing>`.

.. module:: django.views.decorators.gzip

GZip compression
================

The decorators in :mod:`django.views.decorators.gzip` control content
compression on a per-view basis.

.. function:: gzip_page()

This decorator compresses content if the browser allows gzip compression.
It sets the ``Vary`` header accordingly, so that caches will base their
storage on the ``Accept-Encoding`` header.

.. module:: django.views.decorators.vary

Vary headers
============

The decorators in :mod:`django.views.decorators.vary` can be used to control
caching based on specific request headers.

.. function:: vary_on_cookie(func)

.. function:: vary_on_headers(*headers)

The ``Vary`` header defines which request headers a cache mechanism should take
into account when building its cache key.

See :ref:`using vary headers <using-vary-headers>`.