View decorators

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

Allowed HTTP methods

require_http_methods(request_method_list)

This decorator is used to make a view only accept 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.

require_GET()

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

require_POST()

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

Conditional view processing

condition(etag_func=None, last_modified_func=None)
etag(etag_func)
last_modified(last_modified_func)

These decorators can be used to generate ETag and Last-Modified headers; see conditional view processing.

GZip compression

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.

Vary headers

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

vary_on_headers(*headers)

See using vary headers.