注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

秋风扫落叶

 
 
 

日志

 
 
 
 

从Django的Turotial中可以学到什么?  

2013-08-20 05:28:48|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

我自己在实现代码的过程中发现这个新手指导基本上就算是Django项目开发的一个缩影了。你完全可以做完它之后继续跟着它的思路走。从这个Tutorials中我们可以学到哪些东西呢?我自己总结了一下。

1. Django的基本使用

当然这个是最基础的了,一个入门教程读完,如果你还不能够开始使用这个东西那只能说明这个入门教程写的很失败。Django无疑做的很优秀,几节的入门教程就把其常用的东西(urls、views、model、admin、test)介绍完毕,却是很不错。

2. Django项目的布局

在做实际项目开发的时候,在写代码前的第一件事就是搭一个整体的架子,在这个Tutorials中基本上包含了源码的所有结构,从project到app的位置,还有template以及静态文件的位置,一个合理的项目结构也应该是如此划分。这对于编写可复用的模块(app)很有帮助。

3. 灵活的url配置

大多数从其他语言转过来的程序员在页面或者代码中用到url的地方,习惯于写完整的url地址。(这可能是我个人猜测),因为从有其他语言经验的人在转到Python,开始用Django写代码时,会以解决问题为目标,很少回去考虑在Django中怎么做才是优雅的。我自己就是个很好的例子,在之前的项目中基本没有用到django的url和reverse模块,找一个借口就是在我接手参与的项目的上下文中,没有这样的使用。

灵活url使用的例子就是:

<form action="{% url 'polls:vote' poll.id %}" method="post">
    {% csrf_token %}
    {% for choice in poll.choice_set.all %}
    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
    <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
    {% endfor %}
    <input type="submit" value="Vote" />
</form>

#以及
...
return HttpResponseRedirect(reverse('polls:results', args=(p.id,)))

4. Class Base View(CBV)的使用

我见过的大多数项目在写view层的时候都是清一色的FBV(function base view),所有的东西都要自己来写。虽然有些不涉及具体某个Model的逻辑这么写没问题,但是对于针对具体Model的业务逻辑,这个东西却是能让你少些很多代码。

不过这个东西的使用打个比喻来说就是,用FBV像是在写作文,所有措词用句都得自己发挥,而CBV就是完形填空,填好几个项,一片文章就完成了。

5. TDD测试驱动开发

上次写Django的测试代码还是在去年,不得不说我目前对开发中的测试重视程度还是不够。前段时间在给admin2提一个pull-request的时候,该项目的拥有者pydanny说必须要有一个测试用例来证明你的代码是可以工作的。于是我便去看了该项目中别人写的TestCase,然后模仿着写出一个TestCase出来,然后才enjoy merge。从这我也意识到,对自己代码负责的最好方式是写个TestCase出来,让它有方法被确保不出错。

Django把测试放到Tutorial中却是是个不错的想法,让初学者一开始就知道有这样的东西存在,在一开始的项目中就建立其测试会保持良好的惯性。

一些不足

虽然在后面的Advanced Tutorial中有介绍如何打包和发布项目,但这似乎不是Django的重点。最后其实应该加上些部署方面的东西就完整了,让初学者认真的学完这一系列之后就可以搭一个自己的网站出来。

  评论这张
 
阅读(1745)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017