首页 > 代码库 > web框架

web框架

Web框架本质

  对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。

 1 #!/usr/bin/env python
 2 #coding:utf-8
 3   
 4 import socket
 5   
 6 def handle_request(client):
 7     buf = client.recv(1024)                       #获取客户端发过来的数据
 8     client.send("HTTP/1.1 200 OK\r\n\r\n")
 9     client.send("Hello, Seven")
10   
11 def main():
12     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)       #创建一个socket服务端对象
13     sock.bind((‘localhost‘,8000))                    #监听8000端口
14     sock.listen(5)                             #最多5个连接
15   
16     while True:                                                     #一直在等待连接
17         connection, address = sock.accept()               #如果有连接,就会获取到值
18         handle_request(connection)                    #获取到值之后调用handle_request处理
19         connection.close()                         #处理完成这个请求后断开这次连接
20   
21 if __name__ == ‘__main__‘:
22     main()

所有web框架的本质就是这20几行代码

 python标准库提供的独立WSGI服务器称为wsgiref。

 1 #!/usr/bin/env python
 2 #coding:utf-8
 3  
 4 from wsgiref.simple_server import make_server
 5  
 6 def RunServer(environ, start_response):
    #environ 客户端发来的所有数据
    #start_response 封装要返回给用户的数据(响应头、状态之类的)
7 start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘)])
    
8 return ‘<h1>Hello, web!</h1>
    #返回的内容
    python3中:
    #
return [‘<h1>Hello, web!</h1>‘.encode(‘utf-8‘)](返回的是列表形式)
10 if __name__ == ‘__main__‘:
11     httpd = make_server(‘‘, 8000, RunServer)
12     print "Serving HTTP on port 8000..."
13     httpd.serve_forever()
#查看请求,通过pycharm断点

自定义Web框架

web框架定义好后,所有用户来访问都是返回的同一个内容,通过请求中的内容(url)区分,返回不同的内容

 MVC

   Model  view    Controller

   数据库  模板文件  业务处理

 MTV

      Model  view    Controller

   数据库  模板文件  业务处理

区别就是文件夹名字的区别,处理过程是一样的

web框架