查看装饰¶
Django提供了几个装饰器,可以应用于视图,以支持各种HTTP功能。
允许的HTTP方法¶
django.views.decorators.http
中的装饰器可用于根据请求方法限制对视图的访问。如果不满足条件,这些装饰器将返回 django.http.HttpResponseNotAllowed
。
-
require_http_methods
(request_method_list)[源代码]¶ 装饰器要求视图只接受特定的请求方法。用法:
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
请注意,请求方法应为大写。
-
require_GET
()¶ 装饰器要求视图只接受GET方法。
-
require_POST
()¶ 装饰器要求视图只接受POST方法。
-
require_safe
()¶ 装饰器要求视图只接受GET和HEAD方法。这些方法通常被认为是“安全的”,因为它们不应具有采取除检索所请求的资源之外的动作的重要性。
注解
Web服务器应该自动删除对HEAD请求的响应内容,同时保持头不变,所以您可以像处理视图中的GET请求一样处理HEAD请求。由于某些软件(如链接检查器)依赖于HEAD请求,因此您可能更喜欢使用
require_safe
而不是require_GET
。
条件视图处理¶
django.views.decorators.http
中的以下装饰器可以用于控制特定视图的缓存行为。
GZip压缩¶
django.views.decorators.gzip
中的装饰器在每个视图的基础上控制内容压缩。
-
gzip_page
()¶ 如果浏览器允许gzip压缩,这个装饰器会压缩内容。它相应地设置
Vary
报头,使得高速缓存将其存储基于Accept-Encoding
报头。
缓存¶
django.views.decorators.cache
中的装饰器控制服务器和客户端缓存。
-
cache_control
(**kwargs)¶ 这个装饰器通过添加所有的关键字参数来修补响应的
Cache-Control
头。有关转换的详细信息,请参阅patch_cache_control()
。
-
never_cache
(view_func)¶ 这个装饰器将
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
头添加到响应中,以指示不应该缓存页面。Changed in Django 1.9:在Django 1.9之前,
Cache-Control: max-age=0
被发送。这没有可靠地防止所有浏览器中的缓存。