• Django开发,一路走来 - [开发]

    2008-04-17

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://henrygame.blogbus.com/logs/19199535.html

    我最早接触Django是在2005年底。当时,我对web开发产生了强烈的兴趣,一心想快速实现几个脑海里关于web的idea。由于一直做软件开发,对web开发毫无概念,所以第一个面临的问题就是选择framework。

    基于java的web framework复杂度太高,不适合做快速开发。asp不跨平台,php听说项目大了管理不方便(现在看来,应该也是不错的)。不是很习惯ruby的语法,放弃了ror。由于久闻python语法的简洁和库的成熟,我就定格在python based framework - django,官方的介绍是: Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.。

    即使是面对从未用过python的我来说,django上手也非常容易。django提供了大量的shortcut scripts,包括:用django-admin.py来生成项目,manage.py来管理项目。自动生成的settings.py一目了然。 urls.py也是简单易懂。实际上,django-admin.py startproject xxx, Hello World的server就可以run起来了,这对新手来说感觉非常好。

    django采用MVT模型,就是Model, Template, View。Model是OR Mapping的实现,对应的数据库的表结构。虽然,很多人指责django的ORM效率不高,但是用过的人都明白它实在是太方便了。django同样提供了执行raw sql的方法解决你性能问题。Template就是html模板支持继承,if, for,等等简单的语法。模板让应用逻辑和展现分离。很多时候你发现只要修改html的模板就可以,根本不需要修改python代码,不需要reload server。View是对应呈现给浏览器的response,通过views.py上的函数render模板实现。用MTV这种pattern来开发 web,真的让我感觉非常舒服。

    除此以外,django还有不少亮点。基于regular expression的url配置(urls.py)。大量好用的middleware(authentication, session, transaction, cache, gzip)。模板可以自定义tag和filter。大量的utils和addons,例如:textile, rss generator。

    当然,django也不是十全十美的。还是有一些鸡肋的设计,比如authentication的User, Group等结构,过于复杂,产生大量冗余表。newform我也用的不多。send_mail没有参数化,content type和encode都不够灵活。模板escape的向后兼容性。当然这些问题都可以通过一些技巧,或者自己实现来替换调,不算太大的问题。

    应livid之约,胡言乱语几句django的开发心得,希望抛砖引玉,大家多多交流。至今,我已经用django开发了3个相对完整的网站,并且还希望继续的做下去。不过,django最近脚步很慢,希望1.0 milestone早点到来。最后,感谢我的django领路人limodou,他说当我的技术支持,真的说到做到,非常感谢。

    Reference

    Django http://www.djangoproject.com/

    Django Step by Step http://www.woodpecker.org.cn/obp/django/django-stepbystep/newtest/doc

    Django Book http://www.djangobook.com/

    Django Master Class http://toys.jacobian.org/presentations/2007/oscon/tutorial/

    Django Snippets http://www.djangosnippets.org/


    收藏到:Del.icio.us




    评论

  • 不过一点也不喜欢django的template,需要再学习一个教本语言,虽然非常容易.

    最好使用Web2py的,直接使用python,不要再学习
    schedo回复ghiewa说:
    而且django template功能太有限,也不爽。
    2008-08-01 09:20:50