客户端对服务器发起的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 | 在不改动协议的前提下,可增加另外的方法。 |
转载于:https://blog.51cto.com/11026142/1835843