Python一些心得:
对于三方开源类库,不清的该怎么用的时候除了看官方文档或搜索以外建议看源代码的调用关系,这样看看它是怎么实现的,类之间的关系,问题很快会解决(Django 的Models有很多类都好像没有写);
Python 的返回值可以一次返回几个值,这样你可以不用返回一个自定义对象或 Dict,以免其他人调用的时候不清楚,少用一些东西;
PIL 这个图像处理类库很好很强;
用 Python 写一些处理脚本是很件很爽的事情;
多看看别人做的开源项目也可以学到很多东西;
import 引用类的时候最好不要完全引用出来,留到文件名哪一段,这样就不慢重复了;
函数定义时,给参数一个默认值,这样在调用的时候就可以不少传哪个参数都可以,就像 .NET 的方法重载;
IDE 把 Outline 列表开着,这样开发起来会更方便,用了这么久,感觉还是 WingIDE 和 PyDev 更优秀一些,不过 WingIDE 是商业软件,推荐 PyDev + Aptana 还带有完美的 HTML,CSS,JS 的开发支持;
给你写的 .py 文件加上 if __name__ == "__main__": 可以方便直接打开这个文件来测试功能,很实用的一个技巧。
Django的心得:
Template 提供的方法不够用时可以通过定义 Templatetag 来实现,另外 Templatetag 还可以定义一些方法来处理复杂的判断,比如 "a" in ["a","b","b"] 这种,在 Template 里面是不可以的,哪可以能过 Templatetag 来实现;
Template 里面有像 Asp.NET 的 MasterPage 一样的功能,看这里 Template inheritance;
HTML 里面,页面之间的调用最好是用 {% url views.methodname param1,param2 %} 这种方式来做,不要直接写死连接地址,以后 url 变动会很麻烦(这个我在 Asp.net 里面就是给每个页面定义一个 url 生成方法,页面全通过调用方法来得到连接地址,当做 url 重写的时候只用改方法实现就搞定,不用再重构页面);
像文章列表项这种好几个页面都会用到的 HTML 结构,把它抽象出来定义成一个子模板,再通过 include('item.html') 这种方式,下次你的时候事情将会简单得多 ;
Model 里面给将 save 方法覆盖了,再加一些验证处理,会在在外面写更合理,这点跟上面一样,还是抽象的概念;
Model 里面用 ManyToManyField 来定义多对多关系,不用创建多个表,syncdb 的时候会自动生成的;
Model 默认会给表加上 主键 id 自动编号,如果你不定义的话;
Django 里面有 Gzip 的 中间件,建议用上,很方便,在settings.py 里面的 MIDDLEWARE_CLASSES 里面加入"django.middleware.gzip.GZipMiddleware" 就可以了;
Views 里面 Response Request 的方法抽象出来,会省很多事。
|
|