在各种语言平台中,python涌现的web框架恐怕是最多的;猜想原因应该是在py中构造框架十分简单,使得轮子不断被发明。
这里记述一下我了解过的两个py web框架,供大家参考,希望能起他山之石的作用。
django
django 应该是最出名的py框架,google app engine甚至erlang都有框架受它影响。
django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起orm,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
django提供的方便,也意味着django内置的orm跟框架内的其他模块耦合程度高。
应用程序必须使用django内置的orm,否则就不能享受到框架内提供的种种基于其orm的便利;理论上可以切换掉其orm模块,但这就相当于要把装修完毕的房子拆除重新装修,倒不如一开始就去毛胚房做全新的装修。
django的卖点是超高的开发效率,其性能扩展有限;采用django的项目,在流量达到一定规模后,都需要对其进行重构,才能满足性能的要求。
这方面的经验可以参考:http://www.slideshare.net/zeeg/djangocon-2010-scaling-disqus
ruby的rails也有类似的问题;以twitter为例,推特到了今日的规模,不要说rails,甚至是连ruby都需要抛弃重来。
就我的感觉django适用的是中小型的网站,或者是作为大型网站快速实现产品雏形的工具。
快速推出产品是王道:
believe it or not, the bigger problem isn’t scaling, it’s getting to the point where you have to scale. without the first problem you won’t have the second. – http://gettingreal.37signals.com/ch04_scale_later.php
===== django 模板 =====
django的模板系统设计十分有意思,也应该其框架内影响最大、争议最大的部分。
django模板的设计哲学是彻底的将代码、样式分离;asp.net提倡将代码/模板分离,但技术上还是可以混合;而django则是从根本上杜绝在模板中进行编码、处理数据的可能。
比方说,asp.net模板中可以写: