自上上周日看完《Python 语言及其应用》学了 Python 之后,就开始想找一门 Web 框架来练练手,恰逢《精通 Django》的出版,于是就高高兴兴的读了起来,学了一周 Django 收获不少,在这里分享一下读后感。

简单地介绍 Django

Django 诞生于2003年,由美国堪萨斯州劳伦斯的一个 Web 开发团队编写。这个团队当时维护几个新闻网站,并且被要求 Web 应用在 紧张的时间内开发出来,于是团队开发了这个易于维护的框架。

基于这个前提,Django 十分适合搭建"内容型"的网站,使用 Django 能在极短的时间内构建全面动态的网站。我在学习的时候也深刻体会到这点,例如自带的管理后台、自带的用户系统(能管理用户的账户、分组和权限,并且实现了基于 cookie 的用户会话。)、强大的 ORM(Object-relational mapping)等等。

适合新手吗?

个人愚见,我认为 Django 是一个十分适合新手的框架,原因如下:

  • 清晰的 MVC 设计
  • 十分上手的 ORM(Model 层:基于 Python 数据结构的 CRUD)
  • 自带用户认证系统(新手不需要自己关心用户系统的安全性)
  • 集成了很多模块,支持大多数数据库
  • 能够熟悉并专注于 Web 开发逻辑

网上也有很多关于 Flask 和 Django 的争论,比如 Flask 十分灵活,而 Django 依赖的东西太多。我认为这是两种不同的设计理念,也要按照需求来选择框架(没错,两种框架都学精了就不会有争论了!),例如开发论坛的时候就能直接依赖 Django 的用户认证系统来搭建,不用重复造轮子。

Django 很好上手,自己花了几天的时间就能搭一个拥有登录注册、评论的博客,文后也会给出一些自己的学习路线建议。

读后感

与实战向的书相比,这本书其实更像是一本工具书,作者也希望这本书能成为 The Django Book 的非官方第三版。本书涵盖的内容全面,对于一些主要的包都有详尽的介绍。

本书前六章是 Django 的基础知识,本书唯一的一个小项目就在里面,目的是让读者对 Django 有基础的认识,并为学习后面的较高级的内容做打好基础。

第七到十三章讲的是 Django 的高级用法,包含前面六章更深入的知识,例如自定义过滤器和装饰器、自定义模型和表单、扩展和定制验证系统、实战性强的测试和部署 Web 应用。

后面的章节是可能用不到的 Django 功能,可以作为扩展阅读。

本书尾也有详细的附录,讲解了 Django 中的各个函数和字段,可以作为参考。

优点

  • 一本优秀的工具书
  • 对 Django 一些机制有深入的讲解

缺点

  • 缺乏大型项目实战
  • 内容覆盖不全面,如:ContentType。

学习建议

熟悉本书前六章内容,简单的看看第七到十章(看这些知识能做什么,太细的点在需要的时候再翻查),然后开始尝试写一个自己的博客。

路线一

如果对自己英语没多少自信,可以参考,作者提供准备好的样式,博客教程也较详细,对零基础萌新友好。

路线二

英语好而且有条件的同学可以参考油土鳖的教程:

入门的教程,也是教你从零开始搭博客,熟悉基础。

Try Django 1.9 教程的进阶版,增加了实时显示的 markdown 编辑、美化细节、ContentType 实现评论功能、基于用户认证系统实现登录注册等使用的技巧。

在前两系列博客教程的基础上,为博客提供 API 支持。

除了 API 的教程,前面教程我都看完了。十分建议有条件的走路线二,里面的内容覆盖了《精通 Django》前十一章所涉及的概念,当然路线一里的博主也十分乐意帮助萌新解决问题,Q 群也活跃。

扩展阅读

    • 入门向,官方的一个投票网站搭建教程:
  • Full Stack Python 简体中文网站中有关 Django 的学习建议与资源整理。

    • 另外也可以看看这网站对 Python Web 框架的一些总结:
  • 在知乎写后端的同学做的指南

  • 进阶必读的书,包含了日常开发的各种建议及设计规范。

  • phodal 所写的全栈增长工程师实战教程。