【web框架前戏】
自己开发Web框架
- socket
- http协议
- HTML知识
- 数据库(pymysql,SQLAlchemy)
应用:通过函数去调用对应的页面,先获取响应的页面信息,再传给客户端!(看代码!)
1、静态页面:网址内容写死,直接跳转显示,数据无法动态更新。
import socket import pymysql def foo(request): f = open("login.html","rb") data = f.read() f.close() return data def var(request): f = open("userinfo.html","rb") data = f.read() f.close() return data routers=[ ("/xxx",foo), ("/ooo",var), ] #web服务 def run(): sk = socket.socket() sk.bind(("127.0.0.1",8080)) sk.listen(5) while True: conn,addr = sk.accept() data = conn.recv(8096) #接收浏览器发送的请求头 data_str = str(data,encoding="utf-8") headers,bodys = data_str.split("\r\n\r\n") temp_list = headers.split("\r\n") method,url,protocal = temp_list[0].split(" ") conn.send(b"HTTP/1.1 200 OK\r\n\r\n") #回应响应头 func_name = None for item in routers: if item[0] == url: func_name = item[1] break if func_name: res = func_name(data_str) else: res = b"404" conn.send(res) #回应响应体(网页主体文本内容) conn.close() if __name__ == '__main__': run()