视图装饰器

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

允许的HTTP 方法

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

require_http_methods(request_method_list)[source]

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

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 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。

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

  1. django 1.8 官方文档翻译: 3-1-2 编写视图

    Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质. 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html ...

  2. Django:视图装饰器

    客户端对服务器发起的HTTP请求时,并不是所有的请求方式都允许被调用的,比如说提交表单的HTTP请求处理方法,可能只允许使用POST 方式提交的才能够被调用,而实用GET方式提交的请求是不被允许的.为 ...

  3. django 1.8 官方文档翻译: 8-3 点击劫持保护

    点击劫持保护 点击劫持中间件和装饰器提供了简捷易用的,对点击劫持的保护.这种攻击在恶意站点诱导用户点击另一个站点的被覆盖元素时出现,另一个站点已经加载到了隐藏的frame或iframe中. 点击劫持的 ...

  4. django 1.8 官方文档翻译: 8-3 点击劫持保护 1

    点击劫持保护 点击劫持中间件和装饰器提供了简捷易用的,对点击劫持的保护.这种攻击在恶意站点诱导用户点击另一个站点的被覆盖元素时出现,另一个站点已经加载到了隐藏的frame或iframe中. 点击劫持的 ...

  5. django 类视图装饰器_灵活视图处理的模式,第2部分–使用装饰器

    django 类视图装饰器 For years, we've been so busy discussing the virtues and drawbacks of the model/contro ...

  6. Django框架之CBV类视图及类视图装饰器

    前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...

  7. django 1.8 官方文档翻译: 2-5-7 自定义查找

    自定义查找 New in Django 1.7. Django为过滤提供了大量的内建的查找(例如,exact和icontains).这篇文档阐述了如何编写自定义查找,以及如何修改现存查找的功能.关于查 ...

  8. django 1.8 官方文档翻译:14-5 信号

    信号 Django包含一个"信号的分发器",允许解耦的应用在信号出现在框架的任何地方时,都能获得通知.简单来说,信号允许指定的 发送器通知一系列的接收器,一些操作已经发生了.当一些 ...

  9. django 1.8 官方文档翻译:14-1 按需内容处理

    按需内容处理 HTTP客户端可能发送一些协议头来告诉服务端它们已经看过了哪些资源.这在获取网页(使用HTTPGET请求)时非常常见,可以避免发送客户端已经获得的完整数据.然而,相同的协议头可用于所有H ...

最新文章

  1. Codeforces Round #200 (Div. 1)A. Rational Resistance 数学
  2. 计算字符串的实际长度
  3. nutch的index-writers.xml
  4. EIGRP stub SIA
  5. CentOS 6.2 本地安装YUM
  6. 设计灵感|举足轻重!登录、注册页面设计案例
  7. 搜狗浏览器收藏夹在哪_chrome谷歌浏览器收藏夹在哪_chrome收藏夹在电脑什么位置...
  8. c++语言 xml数据绑定技术简介
  9. ArcGIS Engine中删除要素的几种方法总结
  10. Java学习(二)Object
  11. Python笔记1——Python概述
  12. 网络编程项目 (网络词典)
  13. cocos creator横竖屏适配方案及常用设计尺寸
  14. KGB知识图谱完成金融行业的信息抽取工作
  15. 软件测试需要具备的技能(软技能硬技能)
  16. 《数据库》数据库的备份与恢复
  17. 黎明之路如何用电脑玩 黎明之路PC电脑版玩法教程
  18. 数据库那些事--greenDAO增删查改
  19. 建设工程法规专科【7】
  20. 高等数学在计算机的应用论文,高等数学论文-计算机软件和应用.doc

热门文章

  1. 数据结构之栈的应用(语法匹配)
  2. C语言 JSON 解析库 - MJSON使用介绍
  3. 创建struct fib_info
  4. ubuntu14.04+ROS indigo+kinectV1 骨骼点检测
  5. tigervnc远程控制linux,CentOS 6.8 安装TigerVNC 实现 Linux 远程桌面
  6. spark sql 查看分区_Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件
  7. endnote如何导入txt文件_python如何处理txt及excel文件
  8. KNN算法(K近邻学习)
  9. html 的layer的属性,layer属性
  10. 进程通信方法的特点以及使用场景