查看装饰器

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

注意,HTTP请求的方法名必须大写。

require_GET()

装饰器要求视图只接受GET方法。

require_POST()

装饰器要求视图只接受POST方法。

require_safe()

装饰器要求视图只接受GET和HEAD方法。 这些方法通常被认为是安全的,因为方法不该有请求资源以外的目的。

Web服务器应自动剥离HEAD请求的内容,同时保持标题不变,因此您可以在视图中像GET请求一样处理HEAD请求。 因为某些软件,例如链接检查器,依赖于HEAD 请求,所以你可能应该使用require_GET 而不是require_safe

条件视图处理

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

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

这些装饰器可用于生成ETagLast-Modified标题;见conditional view processing

GZip压缩

django.views.decorators.gzip 里的装饰器基于每个视图控制其内容压缩。

gzip_page T0>()¶ T1>

如果浏览器允许gzip 压缩,这个装饰器将对内容进行压缩。 它设置相应的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, 无缓存, 没有存储, 必重新验证 标题到响应,表示页面不应该被缓存。