查看装饰器

Django提供了几个可应用于视图的装饰器,以支持各种HTTP功能。

允许的HTTP方法

根据请求方法,可以使用django.views.decorators.http中的装饰器来限制对视图的访问。 如果条件不满足,这些装饰器将返回django.http.HttpResponseNotAllowed

require_http_methods(request_method_list)[source]

装饰者要求视图只接受特定的请求方法。 用法:

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 T0>()¶ T1>

装饰者要求一个视图只接受GET方法。

require_POST T0>()¶ T1>

装饰者要求一个视图只接受POST方法。

require_safe T0>()¶ T1>

装饰者要求视图只接受GET和HEAD方法。 这些方法通常被认为是“安全的”,因为除了检索请求的资源之外,它们不应该具有采取行动的意义。

注意

Web服务器应该自动剥离HEAD请求的响应内容,同时保持头文件不变,所以您可以像处理视图中的GET请求一样处理HEAD请求。 由于某些软件(如链接检查程序)依赖于HEAD请求,因此可能更愿意使用require_safe而不是require_GET

条件视图处理

django.views.decorators.http中的以下装饰器可用于控制特定视图上的缓存行为。

conditionetag_func = Nonelast_modified_func = None[source]
etag(etag_func)[source]
last_modified(last_modified_func)[source]

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

GZip压缩

django.views.decorators.gzip中的装饰器以每个视图为基础控制内容压缩。

gzip_page T0>()¶ T1>

如果浏览器允许gzip压缩,这个装饰器压缩内容。 它相应地设置了Vary标头,以便高速缓存将其存储基于Accept-Encoding标头。

Vary标题

可以使用django.views.decorators.vary中的装饰器来根据特定的请求标头来控制缓存。

vary_on_headers(*headers)[source]

Vary标头定义了缓存机制在构建缓存密钥时应该考虑哪些请求标头。

请参阅using vary headers

缓存¶ T0>

django.views.decorators.cache控制服务器和客户端缓存中的装饰器。

cache_control(**kwargs)[source]

这个装饰器通过添加所有的关键字参数来修补响应的Cache-Control标题。 有关转换的详细信息,请参阅patch_cache_control()

never_cache(view_func)[source]

这个装饰者增加了一个 缓存控制: 最大年龄= 0, 无缓存, 没有店面, 必重新验证 头到一个响应,表明一个页面不应该被缓存。