JavaEE鸿蒙应用开发HTML&JS+前端Python+大数据开发人工智能开发电商视觉设计软件测试新媒体+短视频直播运营产品经理集成电路应用开发(含嵌入式)Linux云计算+运维开发C/C++拍摄剪辑+短视频制作PMP项目管理认证电商运营Go语言与区块链大数据PHP工程师Android+物联网iOS.NET

Django的请求和响应

来源:黑马程序员

浏览2749人

2019.12.11

一、Django的请求和响应

1、快速实现

①定义路由  urls.py

②定义视图函数  views.py

·······

③模型数据调用  创建表

④包含模板  加载模板 (html····)

1.1、路由定义

1576052548598399.png

1576052557552183.png

1576052564111942.png

1.2、编写视图

1576052573884561.png

1576052580679299.png

1.3、浏览器访问

6.png

到这里,就完成了一个页面请求。

2、请求

https://docs.djangoproject.com/zh-hans/2.1/ref/request-response/

客户端请求服务器端携带的信息

属性:

HttpRequest.scheme:请求的方式,即http或者是https

HttpRequest.body:请求的主体,返回的是一个字符串

HttpRequest.path:请求的路径,这里的路径是指相对路径,也就是说一个登陆后台页面的请求:http://127.0.0.1:8000/admin 的路径是 /admin 

HttpRequest.method:请求方式 POST/GET

HttpRequest.encoding:请求提交的数据的编码方式

HttpRequest.GET:获取get方式表单中或url提交的数据

HttpRequest.POST:获取post方式表单中或url提交的数据

HttpRequest.META:获取的是一个标准的python字典。它包含了所有的HTTP请求信息

方法:

HttpRequest.get_host():请求的地址

HttpRequest.get_port():请求的端口

HttpRequest.get_full_path():请求的完整路径,包括get参数

1576052603985083.png

1576052610658644.png

接收GET方式传值

1576052619356303.png

1576052632179098.png

1576052645569439.png

3、响应

服务器端返回给客户端的信息

属性:

HttpResponse.content:响应内容

HttpResponse.status_code:响应状态码

HttpResponse.content_type:响应类型(默认是:text/html )

1576052654750086.png

1576052661990634.png

4、GET请求传参和接收

Get请求是明文传输,信息附加在url上面。

在HttpRequest对象中,GET属性是django.http.QueryDict 的实例,它是一个自定义的类似字典的类,用来处理同一个键带有多个值。这个类的需求来自某些HTML 表单元素传递多个值给同一个键。

request.GET的QueryDict 在一个正常的请求/响应循环中是不可变的。

例:接收URL通过GET方式传输过来的参数,并打印到页面上

①接收到参数

②通过response返回参数

1、定义路由

1576052670117864.png

2、定义视图函数

1576052677439655.png

1576052684342145.png

③进行参数组合返回给页面显示

1576052691987536.png

5、POST请求传参和接收

POST相对于Get请求是安全的,所有信息附加在表单中。

在HttpRequest对象中,POST属性是django.http.QueryDict 的实例,它是一个自定义的类似字典的类,用来处理同一个键带有多个值。这个类的需求来自某些HTML 表单元素传递多个值给同一个键。

request.POST的QueryDict 在一个正常的请求/响应循环中是不可变的。

例:通过postman(接口调试工具)模拟发送POST请求,传输参数并把参数打印到页面

①postman发送数据

1576052700321318.png

Tip:403  CSRF 禁止访问

解决方案一: 禁止关闭  CSRF 限制

1576052708118014.png

②返回数据信息

1576052716106886.png

21.png

6、QueryDict对象

QueryDict.get(key, default=None)

QueryDict.getlist(key, default=None)

1576052730731109.png

QueryDict.items()

QueryDict.lists()

1576052738102833.png