python -- 自定义web框架

在学习自定义web框架之前我们对什么是web框架需要有个清晰的认识,本质上说,web框架就是一个socket Server。

目前常见的动态网站WEB框架前面有WSGI(eg:Django、Flask...)或者是自己写的SOCKET(Tornado),然后交给URL路由系统处理,然后交给某个函数或某个类,然后在模板(常用jinja2)里拿到模板然后把模板和从数据库取出的数据进行混合组成一个字符串然后返回给用户(python3在发送时要byte编码)。

这里对WSGI举例说明一下:

  WSGI是用来接收请求,然后封装请求。例如对Django来说都封装到了request里面。

  

自定义web框架

1、web框架雏形之socket实现

python  -- 自定义web框架

 1 #!/usr/bin/env python
 2 # -*- coding:utf8 -*-
 3 
 4 import socket
 5 
 6 
 7 def handle_request(client):
 8     buf = client.recv(1024)
 9     client.send(b"HTTP/1.1 200 OK 

")
10   # with open('./html/index.html','r') as f: #执行时这里报错 错误详情下文有说明
11 with open('./html/index.html', 'rb') as f: 12 client.send(f.read()) 13 14 15 def main(): 16 ip_port = ('127.0.0.1',9999) 17 sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 18 sock.bind(ip_port) 19 sock.listen() 20 21 while True: 22 conn, addr = sock.accept() 23 handle_request(conn) 24 conn.close() 25 26 27 if __name__ == '__main__': 28 print("