初识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>
前端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

 

posted @ 2019-02-25 08:48  王苗鲁  阅读(92)  评论(0)    收藏  举报