• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Django视图装饰器

Python框架 彭东稳 7年前 (2017-11-27) 25283次浏览 已收录 0个评论

Django为视图提供了数个装饰器,用以支持相关的HTTP服务。

1. 允许的HTTP方法

django.views.decorators.http包里的装饰器可以基于请求的方法来限制对视图的访问。若条件不满足会返回 django.http.HttpResponseNotAllowed。

require_http_methods(request_method_list)

限制视图只能服务规定的http方法。用法:

这样设置完成后,只有当用户请求方式为POST,或者GET时,才允许访问这个视图,其他请求方式一律返回405错误。

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

require_GET()

只允许视图接受GET方法的装饰器。

require_POST()

只允许视图接受POST方法的装饰器。

require_safe()

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

备注:Django会自动清除对HEAD请求的响应中的内容而只保留头部,所以在你的视图中你处理HEAD请求的方式可以完全与GET请求一致。因为某些软件,例如链接检查器,依赖于HEAD请求,所以你可能应该使用require_safe而不是require_GET。

2. Gzip压缩

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

gzip_page()

如果浏览器允许gzip压缩,这个装饰器将对视图进行压缩。它设置相应的Vary头部,以使得浏览器缓存根据Accept-Encoding头来存储信息。

3. Vary头部

django.views.decorators.vary可以用来基于特定的请求头部来控制缓存。

vary_on_cookie(func)

vary_on_headers(*headers)

到当构建缓存的键时,Vary头部定义一个缓存机制应该考虑的请求头。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!