一、Web框架本质
-
所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端
二、Web框架功能
-
socket收发消息 —— wsgiref(测试)、uwsgi(线上)
-
根据不同的路径返回不同的字符串
-
返回动态页面(字符串的替换)—— jinja2
三、Web框架种类
-
django
-
根据不同的路径返回不同的字符串
-
返回动态页面(字符串的替换)
-
-
flask
-
根据不同的路径返回不同的字符串
-
-
tornado
-
socket收发消息
-
根据不同的路径返回不同的字符串
-
返回动态页面(字符串的替换)
-
四、自定义web框架
-
简单示例:socket服务端
import socket # 创建一个socket对象 sk = socket.socket() # 绑定IP和端口 sk.bind(('127.0.0.1', 8000)) # 监听 sk.listen(5) # 等待连接 while True: conn, addr = sk.accept() # 接收数据 data= conn.recv(1024) print(data) # 返回数据 conn.send(b'HTTP/1.1 200 OK\r\n\r\n<h1>ok!</h1>') # 断开连接 conn.close()
-
根据不同路径返回不同的内容(普通版)
普通版import socket # 创建一个socket对象 sk = socket.socket() # 绑定IP和端口 sk.bind(('127.0.0.1', 8000)) # 监听 sk.listen(5) # 等待连接 while True: conn, addr = sk.accept() # 接收数据 data = conn.recv(1024) data = data.decode('utf-8') url = data.split()[1] conn.send(b'HTTP/1.1 200 OK\r\n\r\n') if url == '/index/': # 返回数据 conn.send(b'<h1>index!</h1>') elif url == '/home/': conn.send(b'<h1>home!</h1>') else: conn.send(b'<h1>404 not found!</h1>') # 断开连接 conn.close()