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的架构就大概呈现在我们眼前了
从来就没觉得这样的比较很恰当,为什么人们总是把这两样完全不同的东西进行比较。如果说乍看起来很像,那也应该是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的架构就大概呈现在我们眼前了

feed
Pylons的最大亮点在于完全基于WSGI,为扩展和定制提供了无限的可能
Ian Bicking(Paste和SQLObject的作者)最近又在Paste的基础之上搞了个WebOb, 似乎很受欢迎的样子
TG, Pylons的这种完全组装式的哲学看起来很好,但是更多实际情况当中,根本不会允许您有那么大的自由度,一个完整统一的解决方案有时候更重要,所以Zope (Plone),Django出现了
现在最新的轻量级框架 repoze.bfg 正在升温。
跟 pylons 一样完全基于 wsgi
official:
http://static.repoze.org/bfgdocs/
zopen.cn translating:
http://docs.everydo.com/zope3/bfg/
Unix哲学是这样的:一个程序只做一件事,并做好。程序要能协作。程序要能处理文本流,因为这是最通用的接口。
在Unix中的python为什么会出现重复发明轮子的事情呢?
pylons在我看,是一个不错的框架,基于其他的python开源项目。
django的话,都要自己搞,每块是不能搞得过别人的吧。
相信django的存在为很多打算开始学习和使用python based的web app开发者提供了充分的理由
并非每个人都是强大的geek, 用户更需要简单的理由