读《Django By Example》

我之前看过几本入门的讲 Django 的书,也照着教程做了点小 Demo,自己处于入门水平,想要提高但又无从下手。

《Django By Example》是我读过的最好的技术书之一,也是我读过的讲 Django 讲得最好、最明白的一本书。自从读到这本书之后,我的 Django 开发水平就蹭蹭蹭地往上上。

因此在这里向大家推荐一下这本书,对于初中级的 Django 开发者,绝对是一本不可多得的好书。以下就是这本书的优点:

一针见血

这本书对概念的讲解绝对堪称一针见血,没有废话也不拖泥带水。有时短短的一小段,就把一块概念讲得明明白白。读起来让人大呼过瘾,赞叹不绝!

知识全面

这本书足足四百多页,把 Django 的方方面面都介绍了个遍。除了 Django 本身,还涉及了一些 jQuery、Redis、Memcached、RabbitMQ 等知识,建立了完善的知识体系。

实例丰富

书的题目就叫《Django By Example》,每几章都搭配有一个实例来进行讲解,实例是此书的重中之重。

首先,所有的实例都是完整的。书中涵盖了博客、类似 Instagram 的社区、在线商城、类似 Coursera 的课程网站。每一个例子都是从创建工程开始,一直到完成所有主要功能。完整到什么程度呢?博客例子中教你自建一个基于 Solr 和 Haystack 的搜索引擎,在线商城教你怎么接入 Paypal,Coursera 中教你怎么构建 RESTful API、用 Memcached 缓存数据。

其次,步骤一跟到底。实例一步一步极为严谨,作者对某一步某个文件改动某些行,描述地极为清晰。隔着书也能感觉到手把手地在教。照着做起来就有一种一跟到底的感觉,几乎没有逻辑跳跃让人跟不上的地方。就连加入新功能,要对某个文件改动哪一行,作者都清楚地在书上帮着标出来。

四百来页的书,不仅讲了 Django 的方方面面,还带着你做了四个重要、完整的互联网实例,简直太厉害了!

生产级实践

作者书中给出的实践,绝非入门书中的 Hello world 等级的玩具代码,而是可以应用到生产实践当中的。

在讲解 Django 的同时,告诉你如何 query 会提高性能,告诉你什么情况下考虑 caching,告诉你如何注意 Web 安全性。

同时,在实例开发的过程中,作者也把开发的最佳实践也告诉了你。例如如何开发社交功能(粉丝、时间线),如何用户管理,如何做 CMS,如何异步执行任务,如何缓存数据等等。

这些都是资深工程师才有的“老经验”,作者在这本书中毫无保留地倾囊而出,作为新手的我无比感激。

学习能有一个好的老师指导能少走很多弯路,一出手就像是个“练家子”,这是多么幸运的一件事。

如何学习此书?

正如书名所述,本书有两个要素:

  • Django
  • Examples

重点在于 Examples。Django 是基础,这本书对 Django 的讲解一针见血,如果你有做技术笔记的习惯,就把书中的见解吸收消化后,纳入到自己的知识体系中。这些基础熟练了,实例才能开发地溜,才有精力学习更高级的知识。

Examples 是全书的核心,大部分的高级知识都潜藏在实例当中。对实例进行充分挖掘,将会大大提高自己的能力,从只会写个 Hello world 升级到中级开发水平。

跟着书上实践实例的时候,千万不可这样:书上进行一步,自己也进行一步,书上说要打什么代码,自己就打什么代码,从头到尾只执行而不思考。这样自己只不过是一个人肉编译器,什么也得不到。

做实例的关键就在于思考:这句代码有什么用?Field 自动更新是怎么做到的?这个项目的布局是怎样的?为什么 Model 要这么设计?

要把这些疑问搞懂,并纳入到自己的知识体系中。

我在这里建议一种这样的学习方式:学习一个实例,就想象是自己要开发一个项目,例如对于博客实例,就想象成我要开发一个博客,而这本书恰好有一个 Tutorial 供我参考。在开发的过程中要总结好文档,理清网站架构。有时书中的内容戛然而止,自己还不够满意,例如博客程序缺少编辑页面,因此不妨自己进一步,集成一个开源的 Markdown 编辑器进去,这样一步一步完善它。

这样,等四个实例都做出来的时候,自己其实相当于开发出了四个产品级别的项目,在主机上配置好环境就能发布。自己能感觉到实力有了明显的提高。

最后,这本书的知识量是很大的。仅读一遍难以完全消化。因此推荐多读几遍,第一遍的时候可以粗一点,以 Django 概念理解为主,之后每一遍,都集中于一个实例,照着书上把它完整地做好,实现书中的功能,思考作者的设计意图。

感谢这本书的作者 Antonio Melé 为我们带来着一本这么棒的好书!