Django知识总结(一)
1. 简述Http协议?
- 超文本传输协议
- 特点:
- 无状态,请求响应之后,再次发起请求时,不认识。
- 短连接,一次请求和一次响应就断开连接。
- 格式:
- GET请求:输入地址回车:https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F
请求由两部分组成:请求头和请求体,请求头和请求体通过\r\n\r\n分割,请求头和请求头之间通过\r\n分割。
"""GET /new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F http1.1\r\n
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36\r\n
Host:jd.com\r\n\r\n"""
响应由两部分组成:响应头和响应体,
b'HTTP/1.1 200 OK\r\nDate: Mon, 05 Nov 2018 01:15:31 GMT\r\nServer: Apache\r\n
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT\r\nETag: "51-47cf7e6ee8400"\r\n
Accept-Ranges: bytes\r\nContent-Length: 81\r\nCache-Control: max-age=86400\r\nExpiresTue, 06 Nov 2018 01:15:31 GMT\r\n
Connection: Keep-Alive\r\nContent-Type: text/html\r\n\r\n <html><head> .... </html>'
- POST请求:
请求由两部分组成:请求头和请求体
"""POST /new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F http1.1\r\n
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36\r\n
Host:jd.com\r\n\r\nusername=haoxu666&password=123"""
响应:
b'HTTP/1.1 200 OK\r\n
Date: Mon, 05 Nov 2018 01:15:31 GMT\r\n
Server: Apache\r\nLast-Modified: Tue, 12 Jan 2010 13:48:00 GMT\r\n
ETag: "51-47cf7e6ee8400"\r\n
Accept-Ranges: bytes\r\n
Content-Length: 81\r\n
Cache-Control: max-age=86400\r\n
Expires:Tue, 06 Nov 2018 01:15:31 GMT\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html\r\n\r\n
用户名或密码错误'
2. 你了解的请求头都有什么?
- User-Agent,设备信息。
- Host,当前访问的主机名称。
- referrer,做防盗链。
- Content-Type: ....
3. 你了解的请求方式有哪些?
- GET/POST/PUT/PATCH/DELETE/OPTIONS
4. django请求的生命周期
浏览器上输入 http://www.oldboyedu.com 地址回车发生了什么?
- 浏览器输入:http://www.oldboyedu.com 回车
- DNS解析,将域名解析成IP。
- 浏览器(socket客户端),根据IP和端口(80)创建连接,发送请求。
- 服务端接收请求
- 实现了wsgi协议的模块,如:wsgiref接收到用户请求。
- 然后将请求转交给django的中间件,执行中间件的process_request(process_view)。
- 路由系统进行路由匹配。
- 匹配成功执行视图函数,视图函数进行业务处理(ORM操作数据+模板渲染)
- 交给中间件的process_response方法
- wsigref的socket.send,将结果返回给浏览器。
- 断开socket连接。
- 浏览器断开连接。