Django使用请求和响应对象在系统中传递状态。
所谓请求和响应就是一种对话式或者说应答式的交互过程。请求是指用户使用浏览器通过http协议发送给服务端的数据,响应是指服务端接收到请求后做一些逻辑处理后回复给浏览器的数据。常用的方法就是GET,POST,HEAD,DELETE,TRACE等。
Django中的请求
Django中的请求实际就是视图函数view中的第一个参数,就是固定为request,当然参数名其实可以任意修改,其为HttpRquest对象,Django接收到http请求后,会根据请求数据创建HttpRequest对象,该对象涵盖了很多内容,包括属性,其涵盖了请求的相关信息。
这里介绍几个常用的属性:
- path_info:URL字符串
- method:请求方法,比如‘GET’和‘POST’方法等
- GET:QueryDict查询字典的对象,包含get请求方法的所有数据
- POST:QueryDict查询字典的对象,包含post请求方法的所有数据
- FILES:类似字典的对象,包含所有的上传文件的信息
Django中的响应
Django响应中,经常使用的是HttpResponse函数,其参数调用格式如下:
HttpResponse(content=响应体,contenttype=响应体数据类型,status=状态码)
常见的contentType有:
- text/html 默认的html
- text/plain 纯文本
- text/css css 文件
- text/javascript js文件
- multipart/form-data 文件提取
- application/json json传输
- application/xml xml文件
演示:Django中GET请求
先在urls.py中增加一个路由:
到views.py中写对应的方法:
运行起来后,调用一下,我这边使用的是postman:
服务端接收到的信息:
在已知客户端会发送某些指定参数的情况下,其实也可以通过指定key值来获取传参:
演示:Django中POST请求
继续使用前面那个something的路由吧,直接在views.py中改一下:
这个时候其实直接使用postman是无法请求成功的,因为django全局发送post请求均需要字符串验证。如果没有验证,请求就会报这个错误:
除了在客户端添加验证之外,其实在服务端也可以关闭这个验证,第一种关闭验证的方法是到settings.py中找到这一个引用并将其注释:
这样所有请求都不会进行字符串校验了。第二种方法是单独将某一个请求的字符串校验进行关闭,像这样:
当然也可以在提交的表单中加入校验的字符串,比如这样:
上面三种方法都是可以的,运行之后,发起请求后,在服务端就会收到这些信息:
我们为了方便,一般都会对一个路由地址做多种请求类型的区分,例如这样:
总结
Django中的请求和响应基本就是这样,虽然请求的类型还有很多,但是使用方式没什么太大的区别。