为四川人民祈祷! www.onefoundation.cn

Pylons的大杂烩

比较过rails和django

从来就没觉得这样的比较很恰当,为什么人们总是把这两样完全不同的东西进行比较。如果说乍看起来很像,那也应该是pylons而不是django,那么稍稍来了解一下pylons吧

Pylons的出现使得python世界之中的另外一个重要的framework TurboGears十分尴尬,Pylons和TurboGears几乎有着完全一致的设计理念,在我的理解中,Pylons实现得更加出色。个人观点:TurboGears可以不用搞了,注意:是个人观点。


Pylons的确是抄袭了很多框架的GoodIdea,在其中我们可以看到很多优秀的设计思想。

TG可能是最初吵着不要重复发明轮子的,于是写了一个脚本把一些它人为不错的东西捆绑了一起。这里面包括CherryPy和SQLAlchemy。Pylons做的更绝,不但绑了,而且绑了很多,比如你可以选择SQLAlchemy也可以选择SQLObject

再来说说和Rails很像的地方,关于Session的处理,它是可以放在各种地方,数据库,文件系统,Rails也是。但是Django不是,全部丢进数据库了,或许将来会有不同的打算。另外URL Dispatch方面Pylons使用的是Routes,它的主页上已经明确表明自己是Rails风格的Dispatcher。最后看看目录结构,和Rails一样让人莫不着头脑,当然仅对新手而言。

事实上,很长一段时间以来,我都没有去仔细了解Pylons。原因是我一直都没有正确的认识到Paste是什么。我自做聪明的认为Paste是一个脚本,但最后我才发现,Paste本身就是一个framework,非常low level的framework。这更加让人拍案叫绝。当TG开始整合各种库的时候,好比自己新写了一个类。但是Pylons从一开始就是继承了一个类,整个工作就在别人的基础上实现了,连自己这个轮子都不再需要被重新发明了。

像基本的输入/输出这样的功能,Pylons就是靠继承Paste得来的,顺便Pylons还得到了一个调试服务器和生成项目需要的脚本,这在几乎所有的框架中都有,Pylons当然也不能少。

接着Pylons需要一些模块来完成它需要的功能:为了实现像rails一样的URL Dispatch,Pylons吸收了Routes。为了实现Session和Cache,Pylons使用了Beaker。当需要模版引擎的时候,Pylons为我们提供了一堆候选者,Mako,Myght,Kid⋯⋯数据库还有SQLAlchemy和SQLObject两个现成的可以使用。Ajax也有很多选择。

现在,Pylons的架构就大概呈现在我们眼前了
tags: pylons  rails  django   
by kernel1983
Comments »
  1. 2007-10-23 23:45
    TG 2.0 将会基于Pylons开发,专著于提供单一选项的framework (不像pylons什么都支持), 面向需要全面解决方案的用户

    Pylons的最大亮点在于完全基于WSGI,为扩展和定制提供了无限的可能

    Ian Bicking(Paste和SQLObject的作者)最近又在Paste的基础之上搞了个WebOb, 似乎很受欢迎的样子
  2. beyking:
    2007-10-26 20:26
    也许站在不同的角度,又不同的看法!
    TG, Pylons的这种完全组装式的哲学看起来很好,但是更多实际情况当中,根本不会允许您有那么大的自由度,一个完整统一的解决方案有时候更重要,所以Zope (Plone),Django出现了
  3. James Su:
    2007-11-17 17:03
    汉语部分的错别字相当多,做程序开发还是严谨一些好,即使写出的东西只给自己看。随便挑一个吧:调式,这个词都弄错,实在...
  4. 2009-02-28 14:56
    python web framework 大体如此。
    现在最新的轻量级框架 repoze.bfg 正在升温。
    跟 pylons 一样完全基于 wsgi
    official:
    http://static.repoze.org/bfgdocs/

    zopen.cn translating:
    http://docs.everydo.com/zope3/bfg/

  5. kernel1983:
    2009-03-4 12:49
    python需要django, 也需要django以外的各种框架
  6. 2009-08-13 23:06
    我有一点不明白的。
    Unix哲学是这样的:一个程序只做一件事,并做好。程序要能协作。程序要能处理文本流,因为这是最通用的接口。

    在Unix中的python为什么会出现重复发明轮子的事情呢?

    pylons在我看,是一个不错的框架,基于其他的python开源项目。

    django的话,都要自己搞,每块是不能搞得过别人的吧。
  7. kernel1983:
    2009-09-12 22:56
    Unix的哲学的目标是设计一个优秀的系统, 但是从用户的角度来说, 一站式的服务有时更有吸引力

    相信django的存在为很多打算开始学习和使用python based的web app开发者提供了充分的理由

    并非每个人都是强大的geek, 用户更需要简单的理由
Leave a Comment:
code:673