当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。
Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。
后端接收到的来至前端的信息几乎全部来自于request中
浏览器提交的请求分为GET与 POST两种,所以在视图函数中,对于不同的请求,我们应该做出不同的响应;
request.method
一个字符串,表示请求使用的HTTP 方法。必须使用大写。 POST/GET
request.POST
一个类似于字典的对象,如果请求中包含表单数据
获取post方式表单中提交的数据
request.POST["username"]
request.POST.get("username")
request.POST.getlist("username")
注意:get方法只能获取表单中username的值的列表中的最后一个,得到的是一个字符串类型;
getlist方法获取的才是完整的的列表!!!
**POST 请求可以带有空的 POST 字典 —— 如果通过 HTTP POST 方法发送一个表单,但是表单中没有任何的数据,QueryDict 对象依然会被创建。 因此,不应该使用 if request.POST 来检查使用的是否是POST 方法;应该使用 if request.method == “POST” **
另外:如果使用 POST 上传文件的话,文件信息将包含在 FILES 属性中
request.GET
一个类似于字典的对象,包含 HTTP GET 的所有参数
获取url路径中 ?后提交的数据,不一定只获取GET方式提交的数据,也可以获取POST
request.GET["username"]
request.GET.get("username")
request.GET.getlist("username")
注意:get方法只能获取表单中username的值的列表中的最后一个,得到的是一个字符串类型;
getlist方法获取的才是完整的的列表!!!
request.FILES
一个类似于字典的对象,包含所有的上传文件信息。 FILES 中的每个键为<input type=“file” name=“” /> 中的name,值则为对应的数据。
注意,FILES 只有在请求的方法为POST 且提交的 带有enctype=“multipart/form-data” 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象。
request.body
存放的是接收过来的最原始的二进制数据
request.POST、request.GET、request.FILES这些获取数据的方法其实都从body中获取数据并解析存放的
request.path
请求的路径,这里的路径是指相对路径,一个字符串,表示请求的路径组件(不含域名)
例如:“/music/bands/the_beatles/”
获取完整路径(包括参数):
HttpRequest.get_full_path()
获取绝对url:
HttpRequest.bulid_absolute_uri(location)此参数默认为完整路径