the5fire

关注Python、Django、Vim、Linux、Web开发、团队管理和互联网--Life is short, we need Python.


Django是否太重了

作者:the5fire | 标签:         | 发布:2013-07-10 7 a.m. | 阅读量: 14716, 14246

接触Django差不多两年了,从一开始转到python就开始用Django做项目,到现在依然是在Django上开发CMS。Django算是个重量级框架吗?我在思考。

事情的缘由是上周末,到beautifularea(ios程序员)那去住了两天。顺便帮他写了个web程序,主要用来下载ios的安装包。同行的还有Younkeryjk(php程序员)。这样一个功能一开始我想用纯python来做的话还真是有点麻烦,麻烦支持在于其中两个东西没有,一个Rounter,另一个是template,都得用第三方才行,那还不如用框架,而框架我最为熟悉的应该是Django,但用Django来做这个事,觉得有点杀鸡用牛刀了,稍 的点。反倒是觉得用php来完成这个功能很简单,本来就是页面。两个页面就可以搞定。

和预想一样,两个页面确实搞定了,但有两个很明显的问题。咳,我想你已经猜到了。一,php不能直接运行,需要配置web服务器,一般就是apache了。二,php的文件表单和代码都纠缠在一起,连身为ios程序员的beautifularea同学都觉得不妥了。统计下开发时长,一个晚上+一个下午。主要调试的时间都花费在apache的配置不断调整上,因为无法确定有些问题是出在代码上还是web服务器上。

这里面其实可以看到或者说总结出来一条哲理,尽可能的减少软件的复杂度意味着能够快速的定位到问题所在。在他们不断配置的过程中,我也会过去指挥一下,同时也深深的觉得Python的框架或者它自己都自备HttpServer,简直就是福利呀。

其实在他们头天晚上配置边配置apache边运行php测试的时候,我也用纯python代码实现了这样的功能,主要是改写了python内置的SimpleHTTPServer模块。如果你看过这个模块的实现,你会知道什么叫做硬编码。但是除此之外也没有别的方案。对自己来说已经适应不了这样的编码方式了,虽然之前写jsp也这么写(如果你能在我博客上找到我多年前写的jsp代码)。不过好赖是实现了,并且最重要的是没用apache。这对ios程序员来说难道不是福利吗,只需要放到服务器上,然后python xxx.py 8080,不用去配apache。

当然了,这不是重点,重点是第二天下午在他俩继续调试代码的时候,我想不如用一个小的框架来写。于是看了看webpy,简单的教程,看看文档。写个py文件(一个url定义,三个类),一个模板(用mako模板)。然后就没有然后了,完了。

拷数据过来,测试,修改。只需一点时间。搞定了。最重要的是相比php里html和代码的纠缠,这里要清晰多了。

好了,再说回正题。其实写完之后我在思考,为什么一开始觉得用框架太重了,是因为我一直沉浸在Django中吗?这个说不清楚。当初刚转到Django时,觉得这个东西简直太轻量了(相比于SSH),但是现在想想觉得Django的其实也蛮重的,只是相对于SSH要易用些罢了。

今天下午大家还在讨论新项目要用什么框架比较合适。我们目前更多的实践其实是在Django和Tornado上,因此也只能从这两个里面挑选。对于Django的观点大家几乎一致表示这东西太重了,但其中有一些功能还是挺好用的。而对于我这样近期一直在Django的admin定制方面开发功能的人来说,Django易用的admin下面都是数不尽的坑(注:这里的坑不是bug,而是文档中没有提到的,或者说。。好吧,django关于admin定制的文档真的不多)。唯一不可否认的是对于一个full-stack的框架来说,学习成本和收益往往是成正比的。

- from the5fire.com
----EOF-----

微信公众号:Python程序员杂谈


其他分类: