前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >django 1.8 官方文档翻译: 3-1-4 视图装饰器

django 1.8 官方文档翻译: 3-1-4 视图装饰器

作者头像
ApacheCN_飞龙
发布2022-11-27 14:53:56
2440
发布2022-11-27 14:53:56
举报
文章被收录于专栏:信数据得永生信数据得永生

视图装饰器

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

允许的HTTP 方法

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

require_http_methods(request_method_list)[source]

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

代码语言:javascript
复制
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()

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

require_POST()

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

require_safe()

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

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

可控制的视图处理

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

condition(etag_func=None, last_modified_func=None)[source]

etag(etag_func)[source]

last_modified(last_modified_func)[source]

这些装饰器可以用于生成ETag 和Last-Modified 头部;参考 conditional view processing.

GZip 压缩

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

gzip_page()

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

Vary 头部

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

vary_on_cookie(func)[source]

vary_on_headers(*headers)[source]

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

参见使用vary 头部

译者:Django 文档协作翻译小组,原文:Decorators。 本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。 Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-08-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 视图装饰器
    • 允许的HTTP 方法
      • 可控制的视图处理
        • GZip 压缩
          • Vary 头部
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档