客户端对服务器发起的HTTP请求时,并不是所有的请求方式都允许被调用的,比如说提交表单的HTTP请求处理方法,可能只允许使用POST 方式提交的才能够被调用,而实用GET方式提交的请求是不被允许的。为了实现这个目的,可以使用到视图装饰器(View Decorators)(很早之前就看到过这种用法,只是没有仔细去了解,今天翻工作日记时,发现曾经记过一笔,今天找了一篇不错的文章,跟大家一起学习,当然最好是能看看源码,这样理解会更深刻)。如果请求是不被允许的,则会抛出django.http.HttpResponseNotAllowed的 HttpResponse响应。常用视图装饰器如下:

require_http_methods(request_method_list)

通过提供一个允许的请求方式的list集合来限制请求视图方法的调用,示例如下:

from django.views.decorators.http import require_http_methods@require_http_methods(["GET","POST"])
def view(request):pass

通过添加一个视图装饰器后,只有my_view方法只有通过GET和POST方法提交的HTTP请求,才被允许调用。

require_GET()

视图处理方法只允许处理GET方式的HTTP请求。

require_POST()

视图处理方法只允许处理POST方式的HTTP请求。

require_safe()

视图处理方法只允许处理GET和POST方式的HTTP请求,这两种请求方法通常是被认为是安全的HTTP请求。

HTTP请求方式有很多,不仅仅只有POST,GET。

具体如下,可以理解下。

序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
9 PATCH  实体中包含一个表,表中说明与该URI所表示的原内容的区别。
10 MOVE 请求服务器将指定的页面移至另一个网络地址。
11 COPY 请求服务器将指定的页面拷贝至另一个网络地址。
12 LINK 请求服务器建立链接关系。
13 UNLINK 断开链接关系。
14 WRAPPED 允许客户端发送经过封装的请求。
15 Extension-mothed 在不改动协议的前提下,可增加另外的方法。

转自:http://www.xcoder.cn/index.php/archives/1710

转载于:https://blog.51cto.com/11026142/1835843

Django:视图装饰器相关推荐

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

    视图装饰器 Django为视图提供了数个装饰器,用以支持相关的HTTP服务. 允许的HTTP 方法 django.views.decorators.http 包里的装饰器可以基于请求的方法来限制对视图 ...

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

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

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

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

  4. django CBV装饰器 自定义django中间件 csrf跨站请求伪造 auth认证模块

    CBV加装饰器 第一种 @method_decorator(装饰器) 加在get上 第二种 @method_decorator(login_auth,name='get') 加在类上 第三种 @met ...

  5. doraemon的python CBV和FBV、视图装饰器

    ### 11.7 FBV和CBV#### 11.7.1 CBV的使用 FBC: function based viewCBV:class based view定义CBV:```python from ...

  6. django 函数装饰器 变为 类装饰器

    aaa   转载于:https://www.cnblogs.com/pythonClub/p/9789190.html

  7. Python攻城师的成长————Django框架(csrf相关装饰器、基于中间件思想编写项目、auth认证模块)

    今日学习目标 逐步掌握csrf相关装饰器.基于中间件思想编写项目.auth认证模块知识点 文章目录 今日学习目标 学习内容 一. csrf相关装饰器 二.基于中间件思想编写项目 三.auth认证模块 ...

  8. Django视图之介绍、项目准备、URL、路由命名、reverse反解析和Postman测试

    知识点: HttpRequest 位置参数和关键字参数 查询字符串 请求体:表单数据,JSON数据 请求头 HttpResponse HttpResponse JsonResponse redirec ...

  9. python: 从函数了解到装饰器

    Table of Contents 1. 简单了解函数 1.1. 函数是什么 1.2. 函数的好处 1.3. 函数和过程的区别 1.3.1. python的函数和过程 1.3.2. common li ...

最新文章

  1. 记一次因坏块引起的dataguard恢复
  2. go get报错unrecognized import path “golang.org/x/net/context”…
  3. Shader相关Mask裁切UI粒子特效或者3D模型
  4. 在C#中怎么调用Resources文件中的图片
  5. mysql逗号分隔函数_mysql split 函数(用逗号分隔)的实现
  6. cup过高是什么意思_做青和焙火有什么关系?
  7. echarts的dataZoom属性在移动端 h5+环境中无法左右滑动问题
  8. python简易发红包_学习python:练习5.简单红包程序
  9. 利用Python脚本编写一个学生平均成绩
  10. 恐怖谷与深度爵士:计算机艺术能达到人类的高峰吗
  11. 华为root_传Mate40系列12月率先升级鸿蒙OS 华为官方回应:真相原来是这样
  12. 网站后台开发 java_Java前后台开发
  13. web打印插件hiprint
  14. 计算机多媒体课件制作,多媒体课件制作软件
  15. Android Studio个人所得税首页布局制作
  16. 背包客旅行札记-html
  17. delphi 注册表
  18. 【Day28 文献泛读】人类数字、时间和空间加工的关联性与独立性
  19. python判断是否为整数的函数_实现函数 isInteger(x) 来判断 x 是否是整数
  20. Excel2010重复打印标题行

热门文章

  1. python sleep什么意思,Python sleep()
  2. python执行过程_Python threading模块condition原理及运行流程详解
  3. mybatis redis_SpringBoot + Mybatis + Shiro + mysql + redis智能平台源码分享
  4. linux根目录数量限制,windows,linux文件夹下文件上限最大个数
  5. 2个JAVA程序能放在一起吗_求JAVA大神把2程序功能组合在一起
  6. coreldraw x5 选择工具快捷键_CorelDRAW设置和优化提高工作效率
  7. lisp用entmake生产圆柱体_投石科技圆柱体全息幻象装置
  8. java anonymous class_java declare anonymous class using proxy api
  9. 车载wince系统刷界面ui_UI入门秘笈,你想知道吗?
  10. 怎么去除三角下拉_用什么方法可以有效去除外墙涂料?