Exmaple 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
Django decorators:
Allowed HTTP methods
The decorators in django.views.decorators.http can be used to restrict access to views based on the request method. These decorators will return a django.http.HttpResponseNotAllowed if the conditions are not met.
@require_http_methods(request_method_list)
@require_GET()
@require_POST()
@require_safe()
Decorator to require that a view only accepts the GET and HEAD methods.
Conditional view processing
The following decorators in django.views.decorators.http can be used to control caching behavior on particular views.
@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.
GZip compression
The decorators in django.views.decorators.gzip control content compression on a per-view basis.
@gzip_page()
Vary headers
The decorators in django.views.decorators.vary can be used to control caching based on specific request headers.
@vary_on_cookie(func)
@vary_on_headers(*headers)
The Vary header defines which request headers a cache mechanism should take into account when building its cache key.
Caching
The decorators in django.views.decorators.cache control server and client-side caching.
@cache_control(**kwargs)
This decorator patches the response’s Cache-Control header by adding all of the keyword arguments to it.
@never_cache(view_func)
This decorator adds a Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private header to a response to indicate that a page should never be cached.
Common
The decorators in django.views.decorators.common allow per-view customization of CommonMiddleware behavior.
@no_append_slash()
This decorator allows individual views to be excluded from APPEND_SLASH URL normalization.
Auth
Decorators from django.contrib.auth.decorators allowing control access of resources.
@login_required