Differences between revisions 1 and 2
Revision 1 as of 2008-09-16 14:17:26
Size: 3260
Editor: HuangYi
Comment:
Revision 2 as of 2008-09-16 14:18:51
Size: 3269
Editor: HuangYi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 48: Line 48:
 Framework URL Dispatcher Templates ORM Form Library  框架 URL分发器      模板 ORM Form       
Rendering of reStructured text is not possible, please install Docutils.

:status: 草稿 ;HuangYi; 100%;

.. contents::

====================
Python Web 框架概览
====================

Python 的 web 框架的情况其实跟 java 有点类似,百家争鸣,
但全部都统一于 MVC 这样一个抽象的大模式之下。

其实会觉得在这些框架中 MVC 也许并不是最重要的特质。MVC 只是
个骨架, DRY(Dont Repeat Yourself)、COC(Convention Over Configuration) 的原则,
在追求纯粹、灵活和实用性之间微妙的权衡,设计的哲学,才是这些框架的灵魂。

但是从骨架讲起,总是比较容易理清思路的。

多少年来,MVC模式不断演化,各种变种相继出现然后消失。在 Python 的世界里,
这种种的变数,在近年却难得地达到了某种新的统一。 ::

                                Model数据模型
    URL分发器  Controller控制器
                                Template模板

上图便是我们说的骨架了。当http请求进入 web 应用程序的疆域,
URL分发器首先根据提供的资源地址,
找到相应负责的控制器,控制器这里是核心的业务逻辑,
或是查询 Model 数据,在将数据填充到模板,
最终产生适当格式的资源的呈现(比如HTML);
或是处理表单,再通过 Model 持久保存数据,等等。

在搭建 Web 框架这样一座宏伟大厦的过程中,python开发者特别重视轮子的重用。
几个主流现在的框架中,组成它们的骨架和肉往往是一些独立的可重用的组件。
所以说 python 开发者都是聪明人:框架多样,可以形成激励不断创新的良性竞争;
重用性好,又可以节省昂贵的人力资源。

===========  =================  ===========  ===========  ==============
 框架        URL分发器          模板         ORM          Form 库       
===========  =================  ===========  ===========  ==============
 Django      Django             Django       Django       Django       
-----------  -----------------  -----------  -----------  --------------
 TurboGears  Object Publisher   Genshi       SQLAlchemy   ToscaWidgets 
-----------  -----------------  -----------  -----------  --------------
 Pylons      Routes             Mako         SQLAlchemy   ToscaWidgets 
-----------  -----------------  -----------  -----------  --------------
 CherryPy    Object Publisher   --           --           --            
===========  =================  ===========  ===========  ==============

Python web 框架的骨架是灵活的,CherryPy 那一栏似乎有好几个骨架缺失,但
实际上其实是把选择的权利交给了你。而其他框架虽然似乎都已经替你做好
了选择,实际上只要你愿意,有很多组件你都是可以很灵活地进行替换的。

关于骨架便说到这为止了,至于让这些框架活起来的那口气,还待我细细道来 ...

ObpLovelyPython/WebFrameworks (last edited 2009-12-25 07:14:01 by localhost)