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 开发者都是聪明人:框架多样,可以形成激励不断创新的良性竞争;
重用性好,又可以节省昂贵的人力资源。
=========== ================= =========== =========== ==============
Framework URL Dispatcher Templates ORM Form Library
=========== ================= =========== =========== ==============
Django Django Django Django Django
----------- ----------------- ----------- ----------- --------------
TurboGears Object Publisher Genshi SQLAlchemy ToscaWidgets
----------- ----------------- ----------- ----------- --------------
Pylons Routes Mako SQLAlchemy ToscaWidgets
----------- ----------------- ----------- ----------- --------------
CherryPy Object Publisher -- -- --
=========== ================= =========== =========== ==============
Python web 框架的骨架是灵活的,CherryPy 那一栏似乎有好几个骨架缺失,但
实际上其实是把选择的权利交给了你。而其他框架虽然似乎都已经替你做好
了选择,实际上只要你愿意,有很多组件你都是可以很灵活地进行替换的。
关于骨架便说到这为止了,至于让这些框架活起来的那口气,还待我细细道来 ...