一、基本原理
web框架的基本原理:客户端发送请求——》socket处理(网络底层)——》返回请求对应信息(业务逻辑处理),
有的web框架同时包含socket和逻辑处理,如:tornado,但有的不包含socket、只有逻辑处理,需要借助第三方的socket,
借助第三方socket,需要符合统一规范wsgi,常用框架有:djnago、bottle、flask等,
python自带模块wsgiref,可实现socket相关功能,基于此搭建的最基本框架见代码:
# 基于python.wsgiref的最基本web框架(二) from wsgiref.simple_server import make_server # 使用框架时,只需要配置对应函数和URLS, def new(): f = open('../JS/caidan.html','r') data = f.read() f.close() return data def index(): return 'index' URLS = { "new":new, "index":index, } # 使用框架时,如下内容不需要改动 def RunServer(environ,start_response): start_response('200 OK',[('Content-Type','text/html')]) # 获取用户URL url = environ['PATH_INFO'] if url in URLS.keys(): functionName = URLS[url] return functionName() else: return "404" if __name__ == '__main__': httpd = make_server('192.168.1.105',8000,RunServer) httpd.serve_forever() # # 基于python.wsgiref的最基本web框架(一) # # from wsgiref.simple_server import make_server # # def new(): # return 'new' # def index(): # return 'index' # # def RunServer(environ,start_response): # # start_resoponse:与反馈信息相关 # start_response('200 OK',[('Content-Type','text/html')]) # # environ:与请求信息相关 # # 获取用户URL # url = environ['PATH_INFO'] # if url == "/new": # ret = new() # elif url == "/index": # ret = index() # else: # ret = "404" # return ret # # if __name__ == '__main__': # httpd = make_server('192.168.1.105',8000,RunServer) # httpd.serve_forever()
二、MVC 与 MTV
所谓的MVC与MTV,本质上是一致的,只是给文件夹起了不同的名字而已,
将web框架文件进行拆分整理,分类放在不同的文件或者文件夹中,如下:
数据相关操作:Models文件或文件夹,
模板HTML文件:VIiews文件或文件夹,
业务逻辑相关:Controller文件,
启动:start文件,
路由:urls文件,
上面这种命名方式,就是MVC框架,如下是MTV框架
数据相关操作:Models文件或文件夹,
模板HTML文件:Templates文件或文件夹,
业务逻辑相关:VIiews文件,
启动:start文件,
路由:urls文件,
三、基于MVC的web框架核心流程:
1、socket启动服务器start文件,绑定主机和端口,
客户端通过socket,将客户端信息及请求,传递给socket(WSGI),
WSGI解析客户端请求,调用路由urls,
2、路由urls根据WSGI解析的客户端请求内容,启动相应业务逻辑控制Controller,
3、业务逻辑控制Controller读取相关HTML模板文件,结合数据Models、动态模板引擎,返回刷新后的HTML信息给start文件,
4、start文件将返回信息,通过socket(WSGI)返回给客户端,
四、动态模板引擎
浙公网安备 33010602011771号