Web开发框架
? Web开发框架是用于Web开发的成套软件架构。Web服务本质上是由socket(一种通信机制,通过绑定IP地址和端口产生一个)通信链,实现计算机间的通信)服务端向socket客户端提供HTTP响应,而浏览器就是一个socket客户端,它向Web发出请求。Django本身就是一个Web开发框架,它连接socket两端进行数据交换,这种交换按照指定的协议进行,即HTTP协议。
Web应用本质
? 网络中不同计算机间进行通信必须经过IP地址和端口。为了降低网络通信开发的复杂度,人们在TCP/IP 4层结构中的应用层与传输层之间加了一层socket层。它把复杂的TCP/IP进行了封装,并提供了一组服务的接口。
? 网络中服务器主机会提供一种或多种服务,每一种服务打开一个socket并绑定到一个端口上,也就是说不同的端口对应于不同的服务(如Web服务一般用到80端口),客户端向那个端口发送请求就会得到相应的响应。
? Web服务器本质上是一个socket服务端,浏览器本质上是一个socket客户端。以下用代码简单说明web开发框架的运行方式:
# 导入socket模块
import socket
# 建立socket服务
sk = socket.socket()
# 绑定IP与端口号,这是绑定本机端口
sk.bind((‘127.0.0.1‘, 8000))
# 进行监听
sk.listen()
print(‘socket服务开始运行......‘)
while True:
# 接收socket客户端连接
conn, addr = sk.accept()
# 接收socket客户端数据
data = conn.recv(1024)
print(data)
# 向客户端发送消息,字符串前加字母b表示以字节形式传递
conn.send(b"HTTP/1.1 200 OK\r\n\r\n")
# 向客户端发送消息,bytes()函数把字符串转换为字节形式
conn.send(bytes("我是socket服务端,我已收到你的请求。", encoding=‘utf-8‘))
以上代码主要实现如下过程:
- 建立socket服务,绑定IP和端口并启动监听进程,这样就把本地计算机设置成socket服务端。
- 服务启动后通过循环语句持续接受浏览器发送的信息。
- socket服务端与浏览器以字节形式在网络上传递信息,在发送字符串前必须将其转换成字节形式。
- socket服务端与浏览器的信息传递必须按照HTTP格式,conn.send(b"HTTP/1.1 200 OK\r\n\r\n")这句代码把字符串按照HTTP格式向浏览器传递,主要格式为HTTP/1.1 200 OK,字符串后面跟两对回车符和换行符,这样其后的字符串就能显示在浏览器中。
在浏览器输入地址即可收到响应。
HTTP简单介绍
是浏览器(客户端)与Web服务器交流的语言,HTTP消息格式有请求和响应两种,请求和响应都包含Header和Body两部分,其中Body是可选的。
HTTP请求(Request)消息包含请求头(Header)和请求体(Body)。请求头每行以"\r\n"结尾,请求头第一行以空格分隔的字符串分别代表请求方法、路径、HTTP等信息。第二个字符串就是路径,是一个较为重要的字符串,由此可推知浏览器地址栏中的URL。请求体从第二行开始都是"头字段名:值\r\n"的形式。请求头和请求体之间以\r\n分隔,请求体可有可无。
HTTP响应(Response)消息包含响应头(Header)和响应正文(Body)。响应头每行以"\r\n"结尾,响应头第一行包含代表HTTP、状态码、状态描述等信息的3个字符串,这3个字符串以空格作为分隔符。响应头从第二行开始都是"头字段名:值\r\n"的形式。响应头和响应体之间以\r\n分隔,响应正文就是显示在浏览器的HTML格式的内容。
python web开发框架
web开发框架的本质就是用HTTP实现socket服务端与浏览器的通信功能。主要有3步:
- socket服务端与客户端收发socket消息,按照HTTP来解析消息。
- 建立URL与要执行的函数的对应关系,这里的函数包含业务逻辑代码。
- 载入HTML文件当作模板,对其中的特殊符号标识的字符串进行替换并发给浏览器显示。