Django到底有什么好?
2008年12月10日 22:49
今天跟猛禽碰了一次头,就一些技术问题交换了一下意见。
期间猛禽提到这次SD大会上好多牛人都在提Django,而且也出现了不少Django开发的实际应用。我和猛禽都觉得有些不可思议。
因为我不是做Web出生,对于Web技术的演变一直比较迟钝。当时听说Django和TurboGears,还是通过limodou的blog。因为大家聊得比较多,于是去看了两眼。
limodou是比较倾向于Django的,但我的第一印象则是喜欢TurboGears。原因有几个。第一,当时我正好接触到CherryPy,对CherryPy的那种风格比较喜欢。第二,我发现Django可以管理多个Application,让我立刻联想到J2EE的容器以及Java应用那极其BT的部署方法,感觉不太好。第三,正如猛禽所说,Django重新造了所有的轮子,跟我的理念完全相悖。
但是因为当时手头也没有什么Web开发的东西,于是对他们的看法,也就停留在了这极其表面的第一眼上。倒是猛禽听了我的推荐,开始用TurboGears开发一些应用。
然而一段时间下来,他发现TurboGears也有不少问题。第一,TurboGears的底层所依赖的CherryPy,每次升级,变化都很大,顺带造成了TurboGears的每个版本变化也很大(但是这个问题,早期的Django也有)。第二,TurboGears因为使用了大量第三方的组件,造成了严重的依赖,首先安装的时候很不方便,很难在离线的状态下安装完整个TurboGears,其次它所依赖的组件很容易跟其他的程序冲突。当时猛禽就碰到过因为同时安装了TG和Pylons,造成了TG应用无法正常运行的情况。
后来BT群开始狗屎皮项目的时候,我就稍微慎重了一点,最后选用的不是我原先推崇的TurboGears,当然也不是Django,而是另外一个RoR风格的开发框架Pylons。Pylons框架可以说是我第一个深入使用的开发框架。使用至今,我的感觉依然和一开始没有太大的变化。Pylons其实并不是太适合作为一个从头开发的框架使用。因为严格的说,它只是一个半成品的框架,甚至没有默认的数据库操作组件。因此要完成一个项目,先期要做大量的工作。这些工作对于一个项目的开发来说,是无谓的时间浪费,因为从根本上来说,这些工作并没有为项目本身带来任何好处。
然而Pylons的一个优点也在这里,正因为它没有绑定太多的东西,所以用它做开发的时候,选择非常的多而且灵活,你可以用你习惯的,崇尚的任何框架来配合Pylons使用,从而组合出最适合你或者最适合项目的一个完整开发框架。而且Pylons的主线流程非常简单,我在从来没有接触过的情况下,只花了大约1天的时间就大致弄清了它的运作机制——这对于需要定制的系统,是非常重要的。
有的时候我在想,如果我真的接到一个任务,我会选择Pylons吗?八成不会。除非这是一个可以长期发展并且可以衍生的项目,我才愿意花一些“不必要”的时间去完善这样一个框架并在此基础上再做真正的开发。否则,当然还是一个现成可用的框架来得更好。
这么看下来,似乎值得选择的还真的只有Django了。但是我仍然持有上面提到的那些感觉不爽的意见,但是为什么现在这么多人都选择了它呢,难道他们没想到这些?还是说,这些根本就不是问题?在我开始一个实际的Django项目之前,我希望能有一个对Django比较了解的人,能够为我深入的介绍一下Django,告诉我Django到底有什么好。
7条评论

所以我决定再回头研究一下Django,反正TG我已经是比较受不了了。 猛禽 (URL) - 2008年12月12日 11:37
django做了所有框架相关的工作,可以让你写的每一行代码都与业务逻辑相关。但是又允许热插拔,你完全可以不用他框架提供的东西,包括middleware,ORM。写自己的middleware, template filter。django的MVT,大量的shortcut scripts,都太好用了。快速开发无可比拟。
关于你说的django重造了轮子,我想是因为web framework的轮子并不复杂,现有的轮子又不够好,自己造,统一性和兼容性都更好,不必受某个轮子的鸟气。实际上,django的轮子造的不错。另外,django也并没有重造所有轮子。 henryhuang (Email) (URL) - 2008年12月16日 11:35
Django可能不是最好的选择,不过综合起来是一个不错的选择。
Django可能有些让人不爽的地方,但如果你尝试用Django的方式去思考,其实也还不错。
以前整过几天的pylons,文档差得一塌糊涂,给我了很糟糕的体验,从此决定再也不碰这东西了。
TG看了它主页上的忽悠,有去再看了一遍它的quickstart,感觉流畅度始终比不上DJ。
而且由于公司有代理用不了easy_install,前些天部署了一个pylons的应用,部署到吐血。依赖组件太多了,down了我半天。 vicalloy - 2009年01月15日 14:22
但是它不是一个“拿来即可用”的东西,如果要开发很多不同的项目,可能会有一些重复劳动的痛苦。我想也许在它的基础上发展自己的框架是个不错的主意。
也许我应该更加现实一点,尝试接受框架给我预设的东西,而不是坚持自己想要的?呵呵。 令狐虫 (Email) (URL) - 2009年01月19日 10:52
另外就是轻巧的web.py jejwe - 2009年02月13日 00:21