排序原则 |
平台 |
有大把時間做企業級應用 |
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 |
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,功能比较多,模板丰富.
从三者出现的时间来说:django>tg>pylons.
van Rossum这位python的创始人在多个场个宣传他喜欢django,就是在最近的Google developer day上,在北京见到这位"明星"他还在说:"I like django".因为我想他的一个观点就是:"Simple is the best.". 当然象大朗所说学习成本高要看怎么说了.如果你的要求高,django有许多高要求的东西,学起来自然很高.如果你的要求低,功能自然差了许多,而且可以使用admin,所以学习成本不高.而且每种框架都有自身的难度,深入下去自然要求比较高.这种高要求也许不全是学习成本,比如有些功能可能框架就没有, 这种难度就不再是学习的难度而是需要由你设计或寻找一个可用实例的难度了.
沈崴 <[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 还是很少被我用到。
4. TurboGears 系的程序员或许会感慨没有像 Django 那么好用的 URL 映射系统, 这是个意想不到的大问题,
因为黑客或许会选择像 TG 那样通过重用构建起来的东西, 但是他们更喜欢正则。
作为 TurboGears 系的一员,小弟斗胆猜测大家的潜台词可能都是: 我们爱 CherryPy 这样的好东西, 这带来了另一个意想不到的大问题: Apache Proxy已经是一个 Tree Mount 和正则发布系统, 无论对 CherryPy 还是 Django 这都绝对不是一个好消息。
接下来,CherryPy 也没有传说中那么快, CherryPy2 已经是有定论了, 而我测试的 CherryPy3 通常也没有能达到 500
个请求每秒的速度。至于 CherryPy3 的 TurboGears 是否能用, 在下也还没有尝试过。
如果在同级应用中 TurboGears系能和 Django 分庭抗礼, 我个人觉得只有一个可能, 那就是 TurboGears (或者直接说 CherryPy)要更简单一些。我个人最先接触到 CherryPy, 这样 TurboGears 系在实际中就用得更多一些, 但是这并不说明我喜欢 TG 要超过 Django。
5. web.py 是对 Django、TurboGears 这些框架的反动, 既然不能像 Plone 这样大而全, 何苦搞得那么复杂?
在下认为, web.py 的作者同样对 SimpleHTTPServer.py 这类的标准库同样非常不满。不过有点尴尬, 我对各种层次的应用都已经有合适的方案了, 而目前所有流行框架不能完成的事情 web.py 同样也搞不定。在下意识到或许所有人对于 web.py 因为各种原因都会有些痒。但是这不妨碍 web.py 的优秀和学术价值。
doudou doudou <[email protected]> hide details 1:04 pm (3 minutes ago) reply-to [email protected] to [email protected] date Jul 10, 2007 1:04 PM subject Re: [python-chinese] 现在python的web框架这么多,有没有人能分析分析各自的优点缺点?
我学的不多,暂且比较一下吧。
TurboGears,因为有cherrypy的基础,一直很想学,只是出于实在没空,其中的表单提交验证是很方便的东西。我涉足TG很浅,知道的也很少,不多做评论,不过由于是与Pylons一样的由多个组件构成,难保各个组件版本难以协调。即便是相同的TG版本也难以确保各个组件的版本与之前安装的都相同。
Re: 关于 Python 的 web 开发框架,应该选择哪个?
web framework大多数从功能上都大同小异。从功能上分:zope/plone算大型的,而django, turbogears算是轻量级的。从学习曲线上分,zope/plone要长一些,而django, turbogears相对要短一些。对于django, turbogears来说,开发的理念有所不同,但功能是类似的。django所有东西都是自已开发的,象模板系统,url映射机制,ORM等。而turbogears则是许多相对成熟项目的集合,这一点与pylons也很象,如模板系统主要是kid,通过模板适配可以使用其它的模板(强调一下,django是松耦合的,许多组件也可以替换),web server组件使用cherrypy,ORM使用SQLObject(还可以使用SQLAlchemy)等等。关于这两种集成的方式,不同的人有不同的看法。有人认为turbogears是好的,因为没有重新造轮子。但有些人象我认为集中式更易管理和控制。所以关键看你认同哪一种设计理念。 对于ajax也有许多不同的声音。ajax本身可以与后台无关,它主要是在前端通过javascript, DOM来操纵前端数据,与后台交互。从这一点上,任何web framework都可以算是支持ajax。如果说不支持,那是从后台能否自动生成相应的html, javascript代码这一层来说的。turbogears嵌入了mochekit的js库的支持,可以通过python程序生成相应的js代码。django则是有人做过这样的工作,但要么不是成熟的东西,要么还没有成型。为什么会这样也与django的设计理念有关系。象turbogears,它的支持是针对不同的js库生成不同的包装,这样如果js库非常多,自然会有许多的包装,目前已经是这样的。而django在讨论是则不希望是这样,希望有一个中间层或无关层,但的确这一点很难。因此后来可能限定在了dojo,不过还没有相关的代码可以看到。只不过admin功能使用了dojo的一些东西。 还有pylons也很有特色。但对于我上人来说,我认为它太复杂了,不容易理解,所以也没有人研究过。目前国内对于django, turbogears, pylons都有人研究,从人数上看是比例依次递减。对于zope/plone则有专门的czug.org,有许多人在学习和研究。 总之,不同的框架从基本功能上是大同小异,在功能是各有特色的,设计理念上也是各有差异。选择一个框架不仅看它的功能是否满足,可能还有许多的因素,如人气,成熟度,是否有现实的应用,性能,设计理念等等。应用从方面进行考查,而且用着顺心可能更重要。象karrigell作为初学入门,或更轻量级的选择也是不错。 -- I like python!
ZoomQuiet
从学习成本来看就三种层次: 1:Zope 系列的高成本复杂性平台,维护需要深入学习成本,带来整体的稳定; 2:Django 等的中等复杂度平台,通过各种组合,使用一定的框架概念,中度学习后,可以获得丰富的功能,和一定数量级别上的稳定; 3:web.py 类的极低学习成本,可以直接进入开发和同步运营,一切功能都可以自行快速开发出来,但是系统整体稳定性依赖开发人员的成熟度 平台的选择主要看你的应用原则,和运维手段,是想依赖平台的设计,还是开发人员的人品? 总之学习成本和对系统整体细节的掌控程度是呈反比的。
没有人否认 Zope-Plone 是最好的 base Python Web app. 平台, 但是, Zope2 也好 Zope 3 也好,都是有极高的学习曲线的, 就好象一个E国人,明知中文的唐诗是最优美的语言艺术, 但是他想恰当的引用诗句和真正可以自如的创造出古体诗的学习成本, 就好比我们要合理合法的深入使用Zope 平台和基于Zope进行二次开发的学习成本! 所以,就个人想立即享受,体验Python 的web app.应用开发,使用 Karrigell/web.py 吧! 想快速将Python 引入商业站点的快速开发,使用 Django/TurobGears 等等框架吧! 如果想真正服务永继的进行 web 服务的话,还是 Zope 3 吧!
-- ZoomQuiet
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 是非常适合的选择.
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在应用管理上比较弱。 第三、原生数据库支持有点少,扩展的不在讨论范围之内。 目前还没有发现有性能方面的问题。
对比集中在高压力环境稳定性和sqlobject的发展结合上
发件人: [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 字典参数.
间中用到的 HTML, ini 都算是基本的内容,用起来没什么要另外学东西的负担.
Django (或 Ruby on rails)每加一页新的资料,都要分别处理对应的 controller.关连似乎不及 TurboGears 承袭 cherrypy 架构可使用单一controller 的简单明了(不知有无说错?)
因此我认为相比之下 TurboGears 成功的机率更大些.
回复: [email protected] 收件人: python-chinese列表 <[email protected]> 日期: 2005-11-14 上午10:24 主题: [python-chinese] Django vs. TurboGears
Django vs. TurboGears
看到列表中讨论 Django 和 TurboGears 的多了起来,我想就这两个web framework提出自已的一些看法,因为哪个都算不上精通,只是对某些方面多一些罢了,至今天除了按照django的教程做了一下,某它的就没做过。TurboGears方面也只是学过CherryPy而已,不过我从我个人的关注角度出来,希望对它们进行比较一下,大家可以补充,让比较更客观。另外因为我对DjanGo关注稍多一些,可能对于turbogears有些不正确的观点,请大家见谅。
DjanGo比 TurboGears 的优点
DjanGo的模板还可以自已扩展,很有趣,可以增加新的tag和filter,而且写起来挺简单。
TurboGears 比 DjanGo的优点
ORM模块采用sqlobject,比DjanGo中的要成熟
宣传力度大,人数多,相对DjanGo活跃
共同的优点:
我的感觉是: -- ZoomQuiet
这两天在看 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
一篇好文:Python web development and frameworks in 2007
节译: 主要比对方面: * 基本框架思想 * URL 调度系统 * 模板系统 * ORM 支持 * 表单处理 * 扩展类型应用 * 高级应用 * 框架已知缺点 * 框架未来发展
是也乎,俺也是看好TG ,奈何未成气候 -- ZoomQuiet
寻找类似ROR的web框架的讨论:[[/SimilarToRor]]--TomZ