视图修饰符

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

装饰课堂 如何将这些修饰符用于基于类的视图。

允许的HTTP方法

室内装潢师 django.views.decorators.http 可用于根据请求方法限制对视图的访问。这些装饰师将返回 django.http.HttpResponseNotAllowed 如果不满足条件。

require_http_methods(request_method_list)[源代码]

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

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

请注意,请求方法应为大写。

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

require_GET()

decorator要求视图只接受get方法。

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

require_POST()

decorator要求视图只接受post方法。

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

require_safe()

decorator要求视图只接受get和head方法。这些方法通常被认为是“安全的”,因为它们不应该具有执行除检索请求的资源以外的操作的意义。

备注

Web服务器应该在保持头不变的情况下自动删除对头请求的响应内容,因此您可以像处理视图中的GET请求一样处理头请求。由于某些软件(如链接检查程序)依赖于头请求,因此您可能更喜欢使用 require_safe 而不是 require_GET .

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

条件视图处理

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

condition(etag_func=None, last_modified_func=None)[源代码]
etag(etag_func)[源代码]
last_modified(last_modified_func)[源代码]

这些修饰符可以用来生成 ETagLast-Modified 标题;见 conditional view processing .

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

gzip压缩

室内装潢师 django.views.decorators.gzip 基于每个视图控制内容压缩。

gzip_page()

如果浏览器允许gzip压缩,则此修饰符将压缩内容。它设置了 Vary 因此,缓存将基于 Accept-Encoding 标题。

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

改变页眉

室内装潢师 django.views.decorators.vary 可用于根据特定的请求头控制缓存。

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

vary_on_headers(*headers)[源代码]

这个 Vary header定义在构建缓存键时缓存机制应考虑哪些请求头。

using vary headers .

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

高速缓存

室内装潢师 django.views.decorators.cache 控制服务器和客户端缓存。

cache_control(**kwargs)[源代码]

此修饰符修补响应的 Cache-Control 通过将所有关键字参数添加到标题。见 patch_cache_control() 有关转换的详细信息。

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

never_cache(view_func)[源代码]

此装饰器添加了一个 Expires 标题设置为当前日期/时间。

这个装饰器添加了一个 Cache-Control: max-age=0, no-cache, no-store, must-revalidate, private 响应的头,指示永远不应缓存页。

只有在尚未设置的情况下,才会添加每个标头。

Changed in Django 5.0:

添加了对包装异步视图函数的支持。

常见

里面的装修工 django.views.decorators.common 允许按视图自定义 CommonMiddleware 行为举止。

no_append_slash()[源代码]

此修饰符允许将单个视图排除在 APPEND_SLASH URL标准化。

Changed in Django 5.0:

添加了对包装异步视图函数的支持。