深入了解常用的pythonweb的几大框架

在各种语言平台中,python涌现的web框架恐怕是最多的,是一个百花齐放的世界,各种micro-framework、framework不可胜数;猜想原因应该是在python中构造框架十分简单,使得轮子不断被发明。所

以在python社区总有关于python框架孰优孰劣的话题。下面就给大家介绍一下python的几大框架:

django

django 应该是最出名的py框架,google app engine甚至erlang都有框架受它影响。

django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起orm,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。

django提供的方便,也意味着django内置的orm跟框架内的其他模块耦合程度高。

应用程序必须使用django内置的orm,否则就不能享受到框架内提供的种种基于其orm的便利;理论上可以切换掉其orm模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做

全新的装修。

django的卖点是超高的开发效率,其性能扩展有限;采用django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。

而django的缺点主要源自django坚持自己造所有的轮子,整个系统相对封闭,django最为人诟病的地方有:

· 系统紧耦合,如果你觉得django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如下面将要说的orm、template。要在django里用sqlalchemy或mako几乎是不可能,即使打了一

些补丁用上了也会让你觉得非常非常别扭。

· django自带的orm远不如sqlalchemy强大,除了在django这一亩三分地,sqlalchemy是python世界里事实上的orm标准,其它框架都支持sqlalchemy了,唯独django仍然坚持自己的那一套。django的

开发人员对sqlalchemy的支持也是有 过讨论和尝试的,不过最终还是放弃了,估计是代价太高且跟django其它的模块很难合到一块。

· template功能比较弱,不能插入python代码,要写复杂一点的逻辑需要另外用python实现tag或filter。django的模板系统设计十分有意思,也应该其框架内影响最大、争议最大的部分。

django模板的设计哲学是彻底的将代码、样式分离;asp.net提倡将代码/模板分离,但技术上还是可以混合;而django则是从根本上杜绝在模板中进行编码、处理数据的可能。

比方说,asp.net模板中可以写:

Posted in 未分类