Pytho WEB 编程的学习方法
目录
- 1 Python WEB开发现状
- 2 WEB开发基础-HTTP
- 2.1 GET请求
- 2.2 POST表单
- 3 WEB开发的基本工具
- 3.1 重定向
- 3.2 内部重定向
- 3.3 cookie
- 3.4 session
- 4 几种Python WEB开发框架的对比
- 4.1 django
- 4.2 TurboGears
- 4.3 Zope
- 4.4 CherryPy
- 4.5 web.py
- 4.6 Twisted
- 4.7 mod_python
- 5 几种模板系统的对比
- 6 几种ORM对比
- 7 Python WEB 快速入门
- 8 django
Python是一种开发效率较高的语言,因此比较适合需求快速变化并且要求快速开发的WEB开发领域。在此对Python的WEB开发做一些简要介绍并对已有的PythonWEB编程技术的学习方法进行一些分析。
1 Python WEB开发现状
Python的快速开发能力使得其在WEB开发中应用广泛,因此也诞生了很多Python的WEB开发框架。Python的WEB开发框架较多一方面依赖于Python的方便性,另一方面也导致了入门时选择框架的麻烦。先进比较流行的几种Python WEB开发框架有Django、TurboGears、Zope等。
同时,由于很多Python WEB开发框架都是基于MTV模式(区别于MVC),所以也同时产生了很多种模板系统,比较流行的有Cheetah等几种。
为了快速的实现数据库的定义与关联,也产生了几种数据库操作框架,流行的几种包括SQLObject、SQLAlchemy、DBUtils等等。
同时又有一些WEB框架本身使用自己专用的模板系统和ORM系统,比如django、Zope等。
虽然面对林林总总的这么多选择,让人总是不知所措,但是实际上各类框架之间有很多相似之处,也存在很多重复实现。只要学通了其中一套框架体系(包含WEB框架、模板和ORM),其他的框架体系也就都可以触类旁通了。
另外,现在的Python WEB开发也正在逐渐向着以django为主的集中靠拢,所以,本文郑重推荐初学者学习django。
2 WEB开发基础-HTTP
2.1 GET请求
撰写中……
2.2 POST表单
撰写中……
3 WEB开发的基本工具
3.1 重定向
撰写中……
3.2 内部重定向
撰写中……
3.3 cookie
撰写中……
3.4 session
撰写中……
4 几种Python WEB开发框架的对比
这里仅对比如下几种比较流行的WEB开发框架,不求全,但求对比。数据取自2007年9月12日。
框架/功能 | django | TurboGears | Zope | CherryPy | web.py | Twisted | mod_python |
开始时间 | 2005.7 | 2005.9 | 199x.x | 2004.11 | 2006.1 | 2001.7 | 2000.10 |
书籍数量 | 1 | 2 | N | 1 | 0 | 1 | 1+ |
单一/组合 | 单一 | 组合 | 单一 | 不完善 | 单一 | 不完善 | 单一 |
开发难度 | 一般 | 一般 | 较难 | 简单 | 超简单 | 较难 | 一般 |
google搜索结果 | 2.6M | 2.12M | 2.48M | 1.53M | 0.78M | 2.11M | 2.49M |
google中文结果 | 0.68M | 0.12M | 0.63M | 58.4K | 25.7K | 0.31M | 78.6K |
4.1 django
比较推荐,详见下面介绍。
4.2 TurboGears
一套组合框架,HTTP处理使用cherrypy,ORM可以使用SQLObject或SQLAlchemy,模板系统默认为kid,可以更换。作为一套组合框架,有着很多个不同的组件。从TG的哲学上讲这叫不重新发明轮子。但是从我Pylons的经验来看,使得各个组件可以和谐的工作在一起也是很困难的。至少我就曾经因为差不多的Pylons使用的某个组件更新版本的差异最终放弃了Pylons。
TurboGears的优点很明显,有大部头的书,文档丰富。另外,就是其版本已经到了1.0.3了,稳定性值得信赖,另外对于开源软家来说,1.0以上的版本意味着接口的稳定。从表格中可以看出,国内用TG的人很少。我最初对TG的好感也仅限于用过CherryPy一段时间。
4.3 Zope
Python中的巨无霸WEB开发框架,曾经是绝对的选择,后来么,因为学习成本的问题而使用略少了一些。对于初学者不太推荐,因为稍微重量级了一点,可以对比J2EE。至于稳定性,据说很多国外政府和军队的网站在用。而且基于Zope开发的Plone是世界排名第三位的CMS系统。文档么,有中文的书籍支持,英文的更不必说。当然,Zope也是一套组合的框架,一些在Python WEB开发方面的机制当初都是Zope开创的,另外在面向对象数据库等方面,Zope也拥有领先的优势。
如果将来要做Python的企业级WEB开发,绝对推荐。
4.4 CherryPy
一套比较简单的WEB开发框架,只含有WEB开发框架。开发很简单,是并不算是方便,因为ORM和模板等等需要自己来选择和配置。比较适合开发实验系统或为其他应用提供一个WEB管理界面。
如果需要学习TurboGears也推荐先从CherryPy学起,这样很多内部机制就好理解了。
4.5 web.py
一套非常简单的框架,不过并不是非常简洁。只提供WEB开发框架而没有其他东西,但是内部做了对流行的ORM和模板系统的导入引用。使用方式在WEB框架里面是比较独特的,只需要把web.py这一个文件放到工程目录里面带走即可,到其他机器上运行时也无需安装,直接可以使用。因此更加适合做其他系统的WEB管理界面。
如果有兴趣推荐读一下web.py的代码,里面有很多先进的思想对未来的编程很有帮助。
4.6 Twisted
Twisted是一套巨无霸的网络编程框架,其WEB开发不过是HTTP协议实现的一个附带功能,如果希望了解足够深的底层知识并控制这些底层细节,那么推荐。因为连HTTP协议的某些细节你都要照顾到。
所以呢,如果你希望提供一些超高性能的WEB接口,比如AJAX应用,XMLRPC服务器等等,那么强烈推荐,因为这个东东真的是太快了。在我的测试中AMD64 x2的机器用apache ab测试,100并发时每秒可以处理1500个HTTP请求。这速度已经没得挑了。
4.7 mod_python
apache-httpd服务器的Python解释器插件,允许直接控制apache服务器来提供WEB功能。速度比较快,但是速度不是强项。强项是稳定性,拖apache的福,在多进程中使用的mod_python稳定性巨牛无比,即便是死掉一个子进程对整体服务器也没什么影响。但是mod_python一般作为如上多种WEB开发框架的Apache-httpd的API接口来使用,提供高可靠性的服务器前端。至于直接用mod_python编程呢,提供了PSP、publisher、自定义模块等几种方式。总体来说也不难,但是大家习惯了把它当底层了,所以也就没人愿意学了。
文档方面,虽然google中文结果很少,但是却又两份官方文档翻译,这在这些框架里面文档的权威性仅次于Zope。反倒是其他框架的中文资料里面hello world满天飞。国内现在仅有的两家提供Python虚拟主机的,有一家就是专门做mod_python的,当然,另外一家专门做django。
5 几种模板系统的对比
撰写中……
6 几种ORM对比
撰写中……
7 Python WEB 快速入门
有如上面所说的,Python的WEB编程,各个框架之间相似度很大,可以按照一定的步骤了解几个重要的知识点,就可以迅速的过渡到另一个框架了。推荐步骤如下:
- 开发服务器的启动和端口配置
- hello world程序
- 返回字符串的方法
- 调用模板的方法(对单一框架则没有)
- URL组织
- 重定向
- 提交参数处理
- cookie & session
- 调用ORM的方法(对单一框架则没有)
- 附加功能,如表单生成与自动验证(TurboGears、Django)、通用模板(django)、中间件支持(Pylons…)、内置认证、AJAX支持等等
- 服务器部署