Python框架 :WEB框架
一、概况
WEB框架本质上,就是一个SOCKET Server
WEB框架前面有WSGI或者是自己写的SOCKET,然后交给URL路由系统处理,然后交给某个函数或某个类,然后在模板里拿到模板然后模板和数据进行混合然后返回给用户!
在Python中, WSGI (Web服务器网关接口)定义了Web服务器与Web应用(或Web框架)之间的标准接口。在WSGI的规范下,各种各样的Web服务器和Web框架都可以很好的交互。
由于WSGI的存在,用Python中写一个简单的网络框架也变得非常容易然而,同很多其他的强大软件一样,要实现一个功能丰富,健壮高效的网络框架并非易事。如果您打算这么做,可能使用一个现成的Web框架(如 Django , Tornado , web.py 等)会是更合适的选择。
二、案例
首先,作为一个初步体验,我们可以借助 wsgiref.simple_server 来搭建一个简单无比(繁琐)的网络应用:
#!/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>Rain007</h1>' if __name__ == '__main__': httpd = make_server('',8000,RunServer) httpd.serve_forever()
运行以上的脚本,打开浏览器,输入 http://127.0.0.1:8000/
后可以看到:一行“Rain007” 。
三、分解
WSGI中规定:应用程序是一个 可调用对象 (可调用对象),它接受 environ 和 start_response两个参数,并返回一个 字符串迭代对象 。
其中, 可调用对象 包括 函数 , 方法 , 类 或者具有 __call__
方法的 实例 ; environ 是一个字典对象,包括CGI风格的环境变量(CGI样式环境变量)和WSGI必需的变量(WSGI所需变量); start_response 是一个可调用对象,它接受两个 常规参数 (status,response_headers)和一个 默认参数 (exc_info); 字符串迭代 对象 可以是 字符串列表 , 生成器函数 或者具有 __iter__
方法的可迭代实例更多细节参考 规范细节 。