Python的支柱:六个Python Web框架的比较

CubicWeb、Django、Pyramid、Web.py、Web2py和Zope 2为精通python的Web应用程序开发人员提供了强大而多样的选择

虽然Python并不像PHP作为一种语言Web应用程序尽管如此,Python在这方面还是有很多值得推荐的地方。与PHP一样,它是一种动态的解释性语言,因此鼓励迭代的、探索性的开发。编程纯粹主义者可能会指出这样一个事实,即面向对象是从Python一开始就被设计到它里面的,而不是在它生命的后期被改造成这种语言。

抛开语言设计的考虑不谈,Python标准库中包含的功能令人印象深刻。Python甚至可以在自己的Web服务器上安装。此外,Python还拥有大量的免费数据库库、大量的免费Web页面模板系统,甚至用于与您喜欢的Web服务器交互的库,这些都可以下载并应用到您的下一个Web应用程序项目中。

[同样在InfoWorld上:InfoWorld评论:9个优秀的Python开发工具| Neil McAllister透露最危险的编程错误.|获取软件开发新闻和见解InfoWorld的开发者世界通讯.]

当然,你不需要做所有这些工作。这些强大而多样的基于python的Web框架的工程师已经为您完成了所有这些工作。

在下面的页面中,我们将回顾Python Web开发人员使用的6个Web应用程序框架。这些绝不是唯一可用的Python Web框架,但代表了广泛的可能性。作为Python开发人员,无论您的需求或专业是什么,这些框架都将是一个很好的选择。

它们包括Zope 2,是任何语言中建立时间最长的Web服务器框架之一的骄傲后代;Web.py,低抽象框架,仅提供Web开发的基本要素;Web2py,提供自己的基于web的集成开发环境的高级框架;金字塔,一种灵活的新产品,来自生产流行的Pylons框架的集团;广受欢迎,备受推崇Django框架;和CubicWeb,您不仅可以使用它构建Web应用程序,还可以构建语义Web应用程序。

Python Web框架:轻的、重的,或者介于两者之间Zope 2是Zope的后代,Zope是所有Python Web应用程序工具的祖辈,也是Python家族树中的一个重要分支。Zope 2的祖先可以追溯到20世纪90年代中期,Zope的持续流行证明了它的稳固性。因此,选择Zope 2的一个巨大优势是,您可以调用15年的代码开发和文档。

Zope 2的“对象发布”系统非常适合面向对象的开发思维,并在一定程度上减轻了您必须攀爬的学习曲线,如果您选择的框架将您的应用程序暴露于Web开发的更多痛苦方面。Zope 2本身确实呈现了一个令人生畏的学习曲线——但您至少会享受15年血统带来的稳定性。

Web2py框架是抽象的天堂。数据库隐藏在数据库抽象层(DAL)之后。Web2py的呈现系统将尝试找到一个视图——取决于上下文——以HTML、XML、JSON或框架支持的六种协议中的任何一种方式显示对象。由一位计算机科学教授精心制作的Web2py模板系统实际上允许您将Python作为一种可嵌入html的脚本语言使用。Web2py介于Zope 2的无所不包世界和金字塔的极简主义世界之间,对于精通python的开发人员来说,进入基于框架的Web应用程序开发世界,Web2py可能是最好的框架。

的哲学Web.py——一个极简主义框架——并不是要抽象出与Web交互的细节,而是要让交互变得更容易。因此,您将直接编写HTTP GET函数处理程序。同样,Web.py数据库系统也没有抽象出SQL;它不是隐藏查询数据库的事实,而是隐藏使用不同数据库的细节。py确实定义了一种模板语言,与Web2py一样,它允许您在Web页面中嵌入任意的Python代码。如果您已经熟悉构建Web应用程序(也许您曾经编写过基于cgi的应用程序),那么Web.py是理想的选择。您将很快开始使用Web.py,但是您必须依靠自己的智慧来超越简单的Web应用程序。

金字塔也是极简主义的Web框架,与其说是它的功能,不如说是它的理念。它没有对您应该使用的后端数据库进行断言,也没有将特定的模板系统强加给开发人员。(目前,Pyramid支持两种选择,尽管Pyramid自己试图保持不可知的选择。)如果说金字塔有什么缺点的话,那就是它的文档描述框架时使用的古怪术语。此外,它放任自由的态度可能会让你想知道如何继续完成一项特定的任务,以及当你设法完成这项任务时,你的解决方案是否是最好的。例如,有两种独立的方法可以确定应用程序将如何处理给定的URL:众所周知的URL映射机制和称为“遍历”的机制(您需要阅读文档来了解它)。所以,在《金字塔》中,你需要以将自己变成探索者为代价来获得灵活性。

Django是一个成熟的、备受推崇的Web框架,它假定您非常了解Python。它的库提供了加速Web应用程序开发的必备功能:一个对象关系映射器,这样你就不必编写自己的RDBMS接口代码;一个模板系统,这样你就不必费劲地将Web页面上的活动Python内容与静态HTML内容结合起来;一个管理界面,使您可以轻松访问站点的后端数据(以及轻松管理网站用户和权限),等等。你应该花点时间来学习Django的API,但是你花在Django上的时间是值得的。这是一个丰富的环境,有很多值得推荐的地方。

CubicWeb它不仅是一个Web开发框架,而且是一个语义Web开发框架。当您发现CubicWeb应用程序与数据库的交互是通过RQL(关系查询语言)来执行时,这种区别就变得明显了,RQL是一种类似于W3C的SPARQL RDF查询语言。CubicWeb的库将RQL查询转换为SQL、XML、LDAP或任何适合被访问数据存储的协议。CubicWeb可能是这篇综述中最难掌握的框架。困难不仅在于你必须学习一些行话,还在于构建一个CubicWeb应用程序需要将多个模块(称为立方体)捆绑到最终的结构中——这对新手来说是一个陌生的过程。然而,一旦你掌握了窍门,CubicWeb确实允许快速开发。一个基本的模型模式就足以让应用程序启动,而CubicWeb的敏捷特性可以让应用程序以迭代的方式发展。

Python Web框架:最小还是最大?如果你想要一个能让你和Web之间的距离最小的框架,那么Web.py将是您最好的选择。另一方面,如果你喜欢向导指引你前进的道路,那么你可能会更喜欢Web2pyCubicWeb如果您的数据来自不同的数据源,则是一个很好的选择。如果你的网站结构是由数据驱动的,那就看一看金字塔Zope 2.此外,Zope 2Django都是可靠的全方位选择,都经受住了时间的考验。

但这些只是一般性的建议。并不是说任何特定的Python Web框架都比其他框架处于明显的劣势。和往常一样,这个选择是高度主观的。你会发现每个产品都有狂热者,每个狂热者都能给出他们选择的框架优越的理性理由。

当然,目前的讨论只是概述。为了获得更详细的信息,请参考下表中的链接并深入到各个评审中。

,

,

这篇文章中,“Python的支柱:六个Python Web框架的比较,最初发表于InfoWorld.com.跟踪最新的发展应用程序开发Python在InfoWorld.com上。有关商业技术新闻的最新发展,请跟随在Twitter上InfoWorld.com

阅读更多关于应用程序开发的内容在InfoWorld的应用开发频道。

这篇文章,“Python的支柱:六个比较Python Web框架”最初是由信息世界

加入网络世界社区有个足球雷竞技app脸谱网LinkedIn对自己最关心的话题发表评论。

版权©2011Raybet2

工资调查:结果在