1. Pythonic Web 应用平台对比

更多的Py实现 CMS--内容管理平台
各种CMS 的对比见
http://cmsmatrix.org/uploads/HA/cO/HAcOzvnZorPtv5wLpUxtDw/cms_matrix.gif cmsmatrix.org

排序原则

平台

有大把時間做企業級應用

plone,zope

適合 python 專家用

pylons, webpy, twisted.web, zope

追求一體框架

django, zope/plone, karingel

適合快速上手

karingel, cherrypy. turbogears

快速 CMS

django

支援度

django, turbogears, pylons, zope/plone

框架自由度

pylons, turbogears

一般用途

django, turbogears, pylons

文檔優勢

django, turbogears, pylons

有 Rails 背景

pylons, turbogears

有 AJAX/javascript helper/widgets

turbogears/pylons

WSGI 支持度

pylons, turbogears(django努力中)

JSON(AJAX server side)

turbogears

並用 flash/flex

turbogears

1.1. 再次综合对比

1.1.1. limodou 曰

limodou <[email protected]>              hide details    4:52 pm (8 hours ago) 
        reply-to                [email protected]   
        to              [email protected]   
        date            Jul 8, 2007 4:52 PM      
        subject         Re: [python-chinese] 现在python的web框架这么多,有没有人能分析分析各自的优点缺点?        

从级别上来说:

server级的了,许多东西都没有,大量的要自已去做.从这三者中如果要选择,我会选择karrigell.karrigell更接近php,功能比较多,模板丰富.

van Rossum这位python的创始人在多个场个宣传他喜欢django,就是在最近的Google developer day上,在北京见到这位"明星"他还在说:"I like django".因为我想他的一个观点就是:"Simple is the best.". 当然象大朗所说学习成本高要看怎么说了.如果你的要求高,django有许多高要求的东西,学起来自然很高.如果你的要求低,功能自然差了许多,而且可以使用admin,所以学习成本不高.而且每种框架都有自身的难度,深入下去自然要求比较高.这种高要求也许不全是学习成本,比如有些功能可能框架就没有, 这种难度就不再是学习的难度而是需要由你设计或寻找一个可用实例的难度了.

1.1.2. 沈崴 曰

沈崴 <[email protected]>                  hide details    12:36 am (40 minutes ago) 
        reply-to                [email protected]       
        to      
        [email protected],
[email protected]       
        date            Jul 9, 2007 12:36 AM     
        subject         [CPyUG:28791] Re: [python-chinese] 现在python的web框架这么多,有没有人能分析分析各自的优点缺点?   
        mailed-by               googlegroups.com         

赵老师, 您好! 我曾走马观花地尝试过上述某些框架, 略有些感想, 希望能对您有所帮助 :)

程序员而言, 除非 ROR 带来的商业利益超过成本上的支出, 否则很难适应 ROR 的效率。打个比方, 在 Plone 中尽管你可以使用 ArchGenXML 通过 UML 图来建立 Plone 应用, 但是真正开始使用后, 我们会发现手写 Archetypes 代码其实要比画 UML 图要来得方便和快捷。

你完全没必要自己作任何事情。Archetypes 拥有难以置信的建模能力, 搜索引擎和增删改页面全自动生成。Plone 自带的工作流引擎允许你靠鼠标完成工作流设计。使用得当, Plone 能带来几十倍的开发效率提升。Plone 也有非常严重的问题。首先,几乎所有人都认为 Plone 很慢, 事实上, Plone Skin 带来了太多 IO, 明白这一点, 我们能把 Plone 加速到和 CherryPy2 不相上下的程度。其次, 很多人对 Plone 定制苦不堪言, 但是如果不过于依赖 Plone Skin, 那么这也不是一个问题。最后, Plone 的栈很深, 不是所有人都会有足够耐心花几年时间来熟练地使用她, 这才是真正的问题 (在下认为这是完全值得的)。

过于完善的系统反而完全束缚了我们, 既然 Django 看上去是目前最好的框架, 这时候我选择 Django。这或许从一个侧面反映了一个在国内鲜为人知的情况, 那就是无论是国内还是国外, 使用 Plone 的应用要远超过 Django, 但是 Plone 程序员不会告诉你哪些站点是用 Plone 开发的, 因为这太偷懒了。常常, 这时任务会简单到直接使用 SimpleHTTPServer.py 就可以解决, 因此即使是一个临时方案, Django 还是很少被我用到。

因为黑客或许会选择像 TG 那样通过重用构建起来的东西, 但是他们更喜欢正则。

个请求每秒的速度。至于 CherryPy3TurboGears 是否能用, 在下也还没有尝试过。

在下认为, web.py 的作者同样对 SimpleHTTPServer.py 这类的标准库同样非常不满。不过有点尴尬, 我对各种层次的应用都已经有合适的方案了, 而目前所有流行框架不能完成的事情 web.py 同样也搞不定。在下意识到或许所有人对于 web.py 因为各种原因都会有些痒。但是这不妨碍 web.py 的优秀和学术价值。

1.1.3. doudou 曰

{{{doudou doudou <[email protected]> hide details 1:04 pm (3 minutes ago)

}}} 我学的不多,暂且比较一下吧。

1.2. 综合对比

Re: 关于 Python 的 web 开发框架,应该选择哪个?

1.2.1. 关注Ajax 时

From: [email protected] <[email protected]>  Mailed-By: googlegroups.com
Reply-To: [email protected]
To: "python.cn" <[email protected]>
Date: Jun 9, 2006 2:15 PM
Subject: [python-cn:10720] Re: 关于 Python 的 web 开发框架,应该选择哪个?

补充一点心得:
如果你的网页应用服务主要关注在 AJAX 应用,
大部分动作都用 javascript 在客户端完成,
只有 data 部分需要后端提供. 那么 TurboGears
是非常适用的选择.
1. 可以先用一般 serverside
开发方式写函式和建立网页应用服务原型 (prototype),
来测试你的网页应用服务该有的功能.
   @expose(format = ".template.pages") #资料以样版格式显示
   def method(self):
   ....
   return dict{data=data}
因为 TurboGears 中从传入 serverside 的表单资料处理一致,
所以在 serverside 写的 code 完全可以继续使用,
不必为了支持 AJAX 重写,
很好的达到不重复自己(DRY)的效果.
2.import javascript library , 将资料改以 JSON 格式传到网页
from turbogears import mochikit
...
@expose(format = ".template.pages") #资料以样版格式显示
@expose(format = "JSON") #资料以JSON格式显示
def method(self):
....
return dict{data=data, scripty = mochikit} #在网页上
TurboGears 预先包好 mochikit, scriptaculous, plotkit 等 javascript
库,
使用时可以用程式呼叫, 预设可用 JSON 格式传输,
预设 mochikit 库提供相应资料处理支援.
3. 在 client 端用 javascript 处理 DOM 物件.
因为在开发的第一步时已经能将所需的资料,
传输内容等都处理好了,
能确信资料传输的正确性. 所以开发 javascript 时,
可以专注在网页内资料处理的部分.
在这时遇到 bug
的话也可以很放心地将可能的问题点缩小到单纯网页内资料处理的范围,
因而 AJAX 开发时最麻烦的交叉 debug 也变得更容易.
因此如果你的网页应用服务主要关注在 AJAX 应用, 那么
TurboGears 是非常适合的选择.

1.2.2. Django 体验

1.2.2.1. Romit~我对django的看法

Romit <[email protected]>
reply-to        [email protected],
to      python邮件列表 <[email protected]>,
date    Dec 13, 2007 11:05 PM
subject [python-chinese] 我对django的看法

2006年末因为接手单位的网站,面对一个烂摊子,怎么能在短时间内让这个网站
焕然一新成为我面临的首要问题。
重造车轮式的方法显然是不可取的,更何况我也不是一个高手,所以就在互联网上
狂搜现成的框架。搜了一堆,首先是
zope,其次是plone,然后是什么tiger之类还有webpy之类,当然还有django。权衡
再三选择了django
第一、学习周期短
我花了2天多一点时间基本上就把django搞清楚了,而zope这个框架太庞大了,看
了一个多月没有搞出什么头绪来,plone
更是如此,tiger之类的呢完全是堆砌的产品(不喜欢,不过不知道这个东东怎么样)
第二、开发速度快
记得写第一个新闻发布系统的时候,大概就是一下午左右的样子,包括前端的AJAX
后台当然是自带的了,我觉得对很对象
我这种公司不给投入的人来说,无疑是一种福音,不管怎么样领导要的是一个结果。
第三、架构比较简单
规则表达式的url简单易用,基本功能一应俱全,特别是数据接口这块,特别适合
不熟悉数据库的人。经典的MVC式框架,对于
不是从事web开发的人员来说也是非常的清晰明了。

说完优点,说说缺点吧。
第一、管理界面比较呆滞,不容易扩展,听说下一个版本已经有所改善。
第二、django的应用管理不适合有变动需求的项目,为什么这么说呢,主要问题出
在django的模型和应用管理这块上,这两块
的功能实在太弱了,如果你不用管理平台这个问题压根就不存在。如果你使用它的
管理平台,对模型的更改首先是管理平台立即宕机,
其次是框架无法对数据库进行相应的更改,除非你对这个项目进行重新的部署,但
是一旦重新部署,你就会发现你的管理平台上所作的
任何权限的配置都无法生效,原因在于数据库内的权限系统已经被污染,除非你在
部署项目的时候,进入django的权限管理数据库系统内
首先清楚先前的项目。也有的网友提出了相应的解决方案:
1、导出数据
2、清除权限配置
3、部署应用
4、导入数据
也就是说django在应用管理上比较弱。
第三、原生数据库支持有点少,扩展的不在讨论范围之内。

目前还没有发现有性能方面的问题。

1.2.3. TurboGears vs Django

对比集中在高压力环境稳定性sqlobject的发展结合

1.2.3.1. gasolin 曰

{{{发件人: [email protected] <[email protected]> 回复: [email protected] 收件人: "python.cn" <[email protected]> 日期: 2005-9-19 下午9:32 主题: TurboGears vs Django }}}这几天从limodou兄的blog中看到 TurboGears 这个框架,看完演示教程后相当为之惊艳.

Django 跟 TurboGears 的出现提供了一个相当 pythonic 的解决方案 (python + HTML :D).

不需要使用资料库查询语言(SQL)或额外的资料库设计修改工具是一大特色.

TurboGears (Python) 是在 cherrypy +SQLObject等的基础之上整合相当成功的框架.

其计划的核心概念是不重复发明轮子, 而是把 python中的各轮子组成有用的框架.计划主要的工作是提供简化的安装, 设定, 操作,与文件.

  • 我们的 WuKooPy 也是这意思,不过关注的深度比较浅 -- ZoomQuiet

之前 Ruby on rails 超热的时候似乎 python 社群有个 SUBWAY计划想达成类似的事情,但一听就知道是想复制 ROR 的计划,并未提出相当的成果.

两者较不同的是 Django提供预设的资料库增删修改介面, 而 TGP似乎还没发展这块.

比起 Django 来说, TurboGears 更吸引我的是整合 AJAX 支援,

Django 跟 TurboGears 相比无论安装, 使用上都复杂许多,而 Django 从头开发也意味着目前 python web开发社群要使用这框架也得多花费心力去学习.

TGP 是由 python script 组成的 controller 呼叫 SQLObject来读出资料库中的资料,再以字典形式传值到样板中当作动态语言的变数.

达成资料库(model)->controller->template (View) 的 MVC 架构

传出的格式如

{data=content, pagename=page.pagename}

这样一次收集所有用到的参数,接收用

<div py:replace="data"/> Page text goes here. </div>

这样在标签中加"py:replace"的格式插入参数,

Ruby on rails 或 Django 每加一页新的资料, 要处理的 MVC关连似乎不及TurboGears 承袭 cherrypy架构(不知有无说错?)的简单明了

TurboGears 教程中是由单一的 controller (标准的 python class) 呼叫 SQLObject来读出资料库中的资料, 再以字典形式传值到样板中当作动态语言的变数.

 达成资料库(model)--controller--template (View)  的 MVC 架构.

  • 由 controller 传出的格式如 {data=content,pagename=page.pagename}

一次收集网页样板将用到的 data 跟pagename 参数.

网页样板 template 接收用

<div py:replace="data">内容显示在这里</div>

实际显示时会将"内容显示在这里"这段替换成资料集"data"中的内容.

要在网页样板中调用这几个参数有两个方式.

  • 第一种是可以在标签中加py:replace="data", 来插入 data字典参数;

  • 或是使用类似一般动态语言给参数的方式 ${data} 插入data 字典参数.

    • 注意第二种的格式还是跟 python调用字典的感觉很像.

间中用到的 HTML, ini 都算是基本的内容,用起来没什么要另外学东西的负担.

Django (或 Ruby on rails)每加一页新的资料,都要分别处理对应的 controller.关连似乎不及 TurboGears 承袭 cherrypy 架构可使用单一controller 的简单明了(不知有无说错?)

  • 因此我认为相比之下 TurboGears 成功的机率更大些.

1.2.3.2. limodou 曰

{{{回复: [email protected] 收件人: python-chinese列表 <[email protected]> 日期: 2005-11-14 上午10:24 主题: [python-chinese] Django vs. TurboGears }}} [wiki:PyCNmail/2005-November/019026.html Django vs. TurboGears]

看到列表中讨论 Django 和 TurboGears 的多了起来,我想就这两个web framework提出自已的一些看法,因为哪个都算不上精通,只是对某些方面多一些罢了,至今天除了按照django的教程做了一下,某它的就没做过。TurboGears方面也只是学过CherryPy而已,不过我从我个人的关注角度出来,希望对它们进行比较一下,大家可以补充,让比较更客观。另外因为我对DjanGo关注稍多一些,可能对于turbogears有些不正确的观点,请大家见谅。

  • DjanGoTurboGears 的优点

    1. 自动的admin界面,有用户和组的管理,这些代码不用你写了
    2. generic view,减少你写view的代码,模板当然还是要的
    3. 模块及模板均支持i18n。
    4. url采用正则表达示很有创意,这样可以规则你的url。另外通过正则表达式可以构造与方法调用无直接关系的链接形式,搜索引擎支持好。
    5. DjanGo的模板还可以自已扩展,很有趣,可以增加新的tag和filter,而且写起来挺简单。

    6. 有middleware,可以自已编写
    7. 应用安装方便
    8. 开发团队集中,目标一致
    9. 已经有网站的应用
  • TurboGearsDjanGo的优点

    1. ORM模块采用sqlobject,比DjanGo中的要成熟

    2. 支持ajax
    3. 充分利用了setuptools工具
    4. 宣传力度大,人数多,相对DjanGo活跃

  • 共同的优点:

    1. 文档做得都不错
    2. 都象ROR一样提供相应的命令行工具

  • 我的感觉是: -- ZoomQuiet

    • TG 是聪明的大杂烩,但是每种主料发展的不均衡一定会影响到TG的,当然集成 Ajax 是非常吸引人的
    • Dj 是一个美妙的新轮子 MTV 非常炫,但是远离了Pythonic, 回到Unix 神秘的命令行时代了,而且DB 操作调试,更加没谱了……
  • 这两天在看 TG 感觉到 TG并没有因为 它的杂而影响到他,相反的很多组建开始依赖 TG 来开发了,而且 TG 开始引入 Plugin的概念了,原来集成在 tg里面的 kid 模板组建 从 r459 开始分离出了TG 这样 TG现在就有了很多的 Template engine 了 TurboCheetah ,TurboStan TurboKid,TurboZpt ,这些个 Template engine 都会为 TG 带来更多的新鲜血液,吸引更多的开发者. 还有 ORM ,估计 Kevin Dangoor 也会渐渐的将 SQLObject作为 plugin来集成在 TG里面了,这样更多 好东西都会慢慢加入 TG了,但是估计CherryPy是换不掉了,现在看tg的maillist Kevin Dangoor 和 Cherrypy的团队合作很密切.呵呵,然后就是很让人期待的事情了 Kevin 打算在 pycon2006之前发布 1.0版本,现在每天就是看 TurboGears Repository Commits 都有些什么更新.

还有 TG的 Toolbox组件也非常的让人期待 modelDesigner的出现使得建模更加的快速和简单了,真正突显出了 TG 的快速开发. by bib

1.2.3.3. InterMa 补充

{{{节译: 主要比对方面:

}}}

寻找类似ROR的web框架的讨论:/SimilarToRor--TomZ

2. 自由评注

频率受到Spamer 攻击!070528关闭自由注释功能

PyWebFrameVs (last edited 2009-12-25 07:10:11 by localhost)