一,语言,
学习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 "<HTML><HEAD>"
echo "<TITLE>Is Laura There?</TITLE>"
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

