Django为视图提供了数个装饰器,用以支持相关的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
中的以下装饰器可以用来控制特定视图的缓存行为。
last_modified
(last_modified_func)[source]¶这些装饰器可用于生成ETag
和Last-Modified
标题;见conditional view processing。
django.views.decorators.gzip
里的装饰器基于每个视图控制其内容压缩。
gzip_page T0>()¶ T1>
如果浏览器允许gzip 压缩,这个装饰器将对内容进行压缩。
它设置相应的Accept-Encoding
头部,以使得缓存根据Vary
头来存储信息。
django.views.decorators.vary
可以用来基于特定的请求头部来控制缓存。
django.views.decorators.cache
中的装饰器控制服务器和客户端缓存。
cache_control
(**kwargs)[source]¶该装饰器通过向其添加所有关键字参数来修补响应的Cache-Control
头。 有关转换的详细信息,请参见patch_cache_control()
。
2017年9月6日