初识Django
1.B/S结构分析与协议导读
完整的Django请求生命周期

页面模板的渲染和数据库的交互不进行交互,Django开发的业务逻辑与(页面模板的渲染,数据库的交互)进行交互。路径决定调用哪个接口

遵循wsgif协议写的server就可以被Django使用,
django找从协议里面选满足规则的,django找到这样的规则表
协议就是两者进行交互的依据
2.基础socket与http协议
完成具体的业务逻辑
规则
# 基于TCP/IP协议基础上的应用层协议,底层实现仍为socket # 基于请求-响应模式:通信一定是从客户端开始,服务器端接收到客户端一定会做出对应响应 # 无状态:协议不对任何一次通信状态和任何数据做保存 # 无连接:一次连接只完成一次请求-响应,请求-响应完毕后会立即断开连接
请求
请求行: GET|POST(请求方式) /(请求路径) HTTP/1.1(http协议版本)
请求头:(了解)
请求体:GET 请求体放在请求路径后进行拼接 POST会在请求行与请求头结束后,以数据包方式单独发送
响应
响应行:HTTP/1.1(http协议版本) 200(状态码) OK(状态结束)
响应头:(了解)
响应体:具体的数据
server.py
import socket PORT = 8801 server = socket.socket() server.bind(('127.0.0.1', PORT)) server.listen(5) print("服务端启动:http://127.0.0.1:%s" % PORT) # 1.浏览器采用http协议方式发生请求 while True: browser, _ = server.accept() data = browser.recv(1024).decode('utf-8') print(data) # 要遵循http协议返回数据:响应行(必须) 响应头 响应体 # browser.send(b'hello world') # 浏览器报错:127.0.0.1 发送的响应无效。 browser.send(b'HTTP/1.1 200 OK\r\n') # 响应行(必须),以\r\n结束 browser.send(b'Content-type:text/html\r\n') # 响应头(可选),服务于响应体 browser.send(b'\r\n') # 响应规则与响应体内容之间还需要一个\r\n标识分割 browser.send(b'normal msg') # 响应体(可选) browser.send(b'<h1>hello world</h1>') # 响应体(可选) browser.close() ''' GET / HTTP/1.1 Host: 127.0.0.1:8801 Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cookie: csrftoken=mrUWWpsEVAB6O870C4eiDD90O6roBaw0NUAQ8wlqtjxk0Bso11NagbpAFjddKERS; sessionid=0x2bad1trn8jg1u897xflgqdrhh5gt0o '''
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试请求</title>
</head>
<body>
<div>GET</div>
<form action="http://127.0.0.1:8801" method="GET">
<input type="text" name="get_usr">
<input type="submit" value="get提交">
</form>
<div>POST</div>
<form action="http://127.0.0.1:8801" method="POST">
<input type="text" name="post_usr">
<input type="submit" value="post提交">
</form>
</body>
</html>
# 响应行 响应头 响应体 HTTP/1.1 200 OK\r\n #响应行 Content-type:text/html\r\n #响应头 \r\n Login Success #响应体
3.状态码
1打头:消息通知 2打头:请求成功 3打头:重定向 #对a页面发送请求,返回回来的是b页面,这叫重定向 4打头:客户端错误 5打头:服务器端错误
4.请求的业务逻辑分发
pass
pass
5.wsgiref模块的处理请求
pass
6.数据库交互与模块渲染
静态页面:页面的数据一成不变的
动态页面:访问登录页面,如果登录成功返回成功,如果登录失败返回失败
7.完整交互过程总结
pass

浙公网安备 33010602011771号