标签:gateway 数据库 info diesel forever imp 状态 方式 改变
----原始web框架 ----自定义web框架 ----mvc和mtv
对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器就是一个socket客户端
简单的说就是,socket传入数据,之后后面是业务逻辑处理程序
画得不好,理解就好
由于web框架包括两部分 1、socket 2、逻辑处理 有些框架只有逻辑处理,没有socket,如flask、bottle、Django 有些框架两部分都有,如tornado 那些没有socket的,需要去自己写或者引入第三方socket,由于没有固定的标准,所以比较混乱,这个时候WSGI就隆重登场了,
中文翻译 web服务网关接口
WSGI(Web Server Gateway Interface)是一种规范,它定义了使用python编写的web app与web server之间接口格式,
实现web app与web server间的解耦。
python标准库提供的独立WSGI服务器称为wsgiref。当还有其他的接口格式:
‘cgi‘: CGIServer, ‘flup‘: FlupFCGIServer, ‘wsgiref‘: WSGIRefServer, ‘waitress‘: WaitressServer, ‘cherrypy‘: CherryPyServer, ‘paste‘: PasteServer, ‘fapws3‘: FapwsServer, ‘tornado‘: TornadoServer, ‘gae‘: AppEngineServer, ‘twisted‘: TwistedServer, ‘diesel‘: DieselServer, ‘meinheld‘: MeinheldServer, ‘gunicorn‘: GunicornServer, ‘eventlet‘: EventletServer, ‘gevent‘: GeventServer, ‘geventSocketIO‘:GeventSocketIOServer, ‘rocket‘: RocketServer, ‘bjoern‘ : BjoernServer, ‘auto‘: AutoServer,
Django实现的wsgiref:
#!/usr/bin/env python #coding:utf-8 from wsgiref.simple_server import make_server def RunServer(environ, start_response): start_response(‘200 OK‘, [(‘Content-Type‘, ‘text/html‘)]) return ‘<h1>Hello world!</h1>‘ if __name__ == ‘__main__‘: httpd = make_server(‘‘, 8000, RunServer) print "Serving HTTP on port 8000..." httpd.serve_forever()
上面模板引擎的参数
第一个参数environ代表封装的用户的所有的请求
第二个参数 start_response 代表返回的数据
目录结构如下:,view文件包里面是HTML文件
controllar文件为
#/usr/bin/env python #-*- coding:utf-8 -*- import os def new(): f=open(os.path.join("Views","s1.html"),"r") data=f.read() f.close() return data def index(): f=open(os.path.join("Views","index.html"),"r") data=f.read() f.close() return data
start文件为:
#/bin/usr/env python #-*- coding:utf-8 -*- from wsgiref.simple_server import make_server # from urls import URLS import controllar def RunServer(environ,start_response): start_response(‘200 OK‘,[(‘Content-Type‘,‘text/html‘)]) url=environ[‘PATH_INFO‘] if url== "/new": ret=controllar.new() elif url=="/index": ret=controllar.index() else: ret="404" return ret # if url in URLS.keys(): # func_name=URLS[url] # ret=func_name() # else: # ret=404 # return ret if __name__== "__main__": httpd=make_server("",81,RunServer) httpd.serve_forever()
上面的文件分别对应上图中的,HTML和和函数,以及socket
但是上面的代码只能返回给用户HTML的内容,但是没法返回动态内容,如何解决?后文分解
如果不考虑内部原理一句话总结MVC和MTV :MTV ---MTV框架就是文件夹的归宿
总结:
1、 插件 2、 web框架 web框架的本质都是socket,通过字符串发送内容 发送字符串: 第一块:协议和方式 第二块:请求头 第三块:发送内容hello 响应字符串: 第一块:协议和状态 200 第二块:响应头 第三块:响应内容“hello” python web框架分类: 自给自足:socket ==》Tornado 第三方:WSGI+框架 MVC.MTV 文件夹的归类
标签:gateway 数据库 info diesel forever imp 状态 方式 改变
原文地址:http://www.cnblogs.com/pyrene/p/6665848.html