一,语言, 学习python后,认为一个好的动态语言应该, 虚拟机,一次编写到处执行 泛类型,但不是无类型 OOP的实现(继承,重载等等) 现代的,强大的词法 语法
二,Web Framework或Web protocol, 作为一个动态web程序框架,必须处理的有, URL Dispatch Form Process [POST GET处理] Session(Cookie) Http header 再高级点的还应有, Role management(authentication) DBMS(ORM) xML templates Cache 等等
三,CGI篇, 在学习CGI前,必须理解什么是Web Browser, 什么是Web Server. 以及他们之间的"语言"--http协议, 以及"会话"过程 早期,Web Browser只能从Web server那里请求到事先编辑好的存放在Server机器上面的文字内容,图片内容或文件,没有现在Web browser发送不同内容的请求,更不会Web server相应这样的请求. 后来,就有了active server page欲望,猜想教本语言诞生的原因是,实现对这种Browser端发过来的会变化的请求进行判断后生成不同的html字串的动作不可能"硬"写在Wb server程序里面. 没有考究过历史是否曾经出现过许多这种功能的脚本语言,但是从现在仅存的主流的Web Server IIS, Apache, Tomcat来看(他们之间互相桥接,互通有无又是后话),主流的被这两个Server程序支持的脚本也就是微软的ASP和开源世界的PHP. 事情至此以后本该是平静的日子,可要计算机技术这个世界永远的变化就是技术间的不断地分化,又不断地融合. 只有Asp 和PHP能生产动态页面的生产工作? C/C++ Pascal Fortran等这些"传统"语言也都想, 所以 CGI诞生了. Common Gate interface #!/bin/sh echo Content-type: text/html echo "" echo "
Is Laura There?" echo 看上面一段标准CGI代码,设计思路基本就是将原本一次写在html文件的字符,用编程语言的方式一句一句运行地输出
四,WSGI, 时间到了2005年,之前Python通过CGI也成功地将自己融合到了web开发这个领域.但是Python使用者发现,他们开始愈来愈先在选择合适的 组件,合适方式继承先前代码上面花费时间.车轮子一遍一遍地重造,整合一次一次进行. 是不是该在Python自己世界里面来协议什么的? 于是Phillip J. Eby提出了WSGI的初步概念,现在在PEP0333中看到是几经修改的被追踪确认的, WSGI allows coummunication between web servers and python web applications. WSGI描述了这样两种行为, Web server调用application'提供'的function或callable object,传入environ 和start_response 其中environ必须是python字典类型,里面保函CGI式的环境变量 Application调用web server传递来的start_response, 传入status和head list, 最后返回 字符list或 iterator status是http状态, head list为; 返回string list是html的body classic codes, def application(environ,start_response) status = '200 OK' response_headers = [('Content-type','text/plain')] start_response(status, response_headers) return ['Hello word']
五,其他 最后所说,我碰到的,并从功能划分的framework --------------第一代 Karrigell --------------第二代 CherryPy Quixote --------------第三代 (早期) TurboGears Django Pylons 第三代(中期) Uliweb Web2py web.py MVC WSGI /|/ URL Dispatch VIEW Model View, cheetah kid mygth genshi ORM, SQLObject SQLAlchemy Control, web.py cherrypy Route Paste