Python Django 的学习路径
注:本文是应可乐兄 @Yi罐可乐 的邀请写下的简短文章,也是对自己学习 Python web 开发的一个总结与交待。
文章首发于与可乐合著的 github 仓库:
python-django-learning
Python 基础
当你学到 Django 的时候,我们默认你已经有了 Python 基础。如果你没有 Python 基础,或者认为自己还需要在 Python 基础上多花一些时候,你可以选择从以下三本书着手。
-
《Python编程 从入门到实践》 (Python Crash Course: A Hands-On, Project-Based Introduction to Programming)这本书的作者就是 Django 项目的维护者之一。本书在学习 Python 基础的同时,可以学到一些 Python 的最佳实践(当然谈到最佳实践,有更多的进阶书籍的选择)。推荐本书的另一个原因是书籍质量不错,在美国亚马逊的 Python programming 排行榜上荣获“Best seller“,194个读者综合评分为4.4的高分(满分5分)。
-
《"笨办法"学Python(第3版)》 (Learn Python the Hard Way) 这本书简称“LPHW”,是经久不衰的 Python 入门书。本书强调的是肌肉记忆,强调的是编程犹如弹吉他,需要亲手实践、加强肌肉记忆。如果你对编程也没有太多概念,这本书会比较轻松的带你入门,增强你的编程自信心。
-
《Python 基础教程》(Beginning Python: From Novice to Professional) 如果在这三本中选一本必看的基础书,个人更偏好、也更推荐这一本。作者对基础知识的讲解清晰明了,内容简单但是并不肤浅。讲解过程通畅,基本不存在费解的情况。代码小片段实例比比皆是,马上就可以动手实践来理解概念,可以让人更容易记得住,学习的效果也是相当好。较深的概念有延展的接口,提供方向供后期自己去扩展。值得一提的是,目前这本书中文翻译是仍然是2009年英文版的 Python 2.7,而今年(2017年)4月Apress出版社继续推出了该书最新的第三版,已经使用 Python 3 的版本(暂无中文版)。作者 Magnus Lie Hetland 在 2006 年开始写作第一版至今,时隔11年还能继续推出最新版,而且内容质量靠谱,实在难能可贵。
Django 与 Python 开发环境问题
注意:目前在维护 Django 版本为:Django 1.8(长期支持版,LTS),Django 1.10,Django 1.11(最新版,长期支持版,LTS,也是最后一个支持 Python2的版本)。
Django 1.8 官方只维护到 2018 年 4 月,Django 官方会继续为其提供相应的安全补丁。考虑到 Django 1.8 版本即将过期,因此建议从目前开始新项目都采用 Django 1.11 开发。Django 1.11 将是最后一个兼容 Python 2 的 Django 版本,将维护至 2020 年 4 月。Django 2.0 即将在 2017 年 12 月推出,从 2.0 版本开始,Django 将只支持 Python 3。Python 3 逐渐成为 Python 开发的趋势,类似 Instagram 等大公司近两年逐渐向 Python 3 迁移。
Python 3 最引人注目的是其原生异步特点(Python 3.4 实验性引入原生异步,在 Python 3.6 正式成为原生内置标准库),但是 Python 的异步生态仍未大规模广泛建立。虽然 Python 异步 web 开发框架有老牌、稳定、庞大的 Twisted(2000年初开发)、以及 2009 年 Facebook 开源出来的 Tornado,但是当前 Python web 开发的主流仍旧是包括 Django 与 Flask 在内的 Python web 同步框架。异步开发特点是一旦选择异步,整条技术栈都要换成异步相关的库(这也意味着难度大、风险高),否则异步可能就会被阻塞。对比来看,目前异步对性能提升,还没有强大到吸引知名公司去使用 Python 进行异步开发。也许 Mozilla 可能会是第一批进行 Python 异步开发的公司。Mozilla(开发火狐浏览器 Firefox 的公司)的后台目前使用 Flask 开发,据其后台开发工程师 Tarek Ziade 在 2017 年 6 月的演讲称,后续的后台系统可能尝试用 aiohttp 进行开发。
如果学习资料是这些版本以前的版本,比如 Django 1.7,则不建议再学习已经过时的资料。对于书籍是否已经过时,Two Scoops 的作者 Daniel R. Greenfeld(也是Django的项目维护者)有一个书籍清单供参考(Current Django Books)。
Django 的版本以及 Python 开发环境至关重要,请在最开始学习 Django 的时候就引起重视。由于 Python、Django以及其他第三方包的版本不同,有时候会产生与学习资料不一样的结果。建议学习过程中注意两点:
- 为每一个项目建立虚拟环境,建立相对独立的开发环境
- 严格按照学习资料的版本进行开发。注意是 Python 2 还是 Python 3,Django 的版本、以及第三方包的版本号。
Django 基础
1. 视频
推荐使用慕课网的两门免费在线视频课程作为入门:
这两门课基本涵盖了 Django 最核心、同时也是最常用的部分,他们会给你建立一个 Django 的整体概念,便于消除你对 Django 的陌生感和恐惧感。
如果想进一步详细的了解 Django,有个综合性的教程名叫
该教程包含 gibbook 电子书(免费)以及视频部分(收费)。该教程之所以比较推荐,作者是搜狐的胡阳(博客地址)。阳哥长期在搜狐大量实际使用 Django,而且对源码比较熟悉,所以该教程讲得深入浅出,有不少独到的见解。
2. 文档
在有了视频的感性认识之后,建议马上阅读完 Django 文档的新手入门6个部分的内容,并亲手实践让代码能跑起来。文档是最权威也是最全面的 Django 参考资料。
- Getting started Django 1.11 英文原版文档的新手入门部分。
- Django 中文文档 1.8 Django 1.8 的中文文档(gitbook在线书)。
3. 书籍与博客
3.1 英文
- Mastering Django: Core: The Complete Guide to Django 1.8 LTS 这本书就是大名鼎鼎的 Django Book 的最新版本。本书前7章是连贯的学习教程,可作为入门教材,后面的章节以讲解概念为主。《中文版的 Django Book》 使用的是 Django 1.1 版本,已经严重过时,中文版本仅供参考。作者的主页是 djangobook.com。
- Hello Web App 作者之前主要从事前段工作,以一个新手的视角来完成本书。整书叙述流畅,以及跟着书完成代码。作者还有一本后续的书籍 Hello Web App: Intermediate Concepts ,内容稍微深一些。
另外有人也经常推荐以下内容,供参考:
- Tango With Django: A beginner's Guide to Web Development With Python / Django 1.9 值得注意的是这本书被列为 Two Scoops 的作者列为过时书籍。
- Django Girls Tutorial Django Girl严格来说已经相当于是一个商业组织,因为该组织在卖周边、做培训,但是入门教程还是不错的,内容基本与 Tango with Django 类似。最近还推出该入门教程的扩展部分。
3.2 中文
- 自强学堂:Django 教程 内容详实免费。值得一提的是作者使用 Django 建站,完全是在实践 Django 的使用,而且作者从2015年至今一直在根据 Django 版本升级而更新教学内容,从最初的 Django 1.6 更新到了 Django 1.10。作者称最新版本的 Django 1.11 内容马上就要推出。
- Django Girls 教程 Django Girls 的中文版,使用 Django 1.8。
- 追梦人物的博客 以 Django 1.10 为基础开发博客到部署的完整教程。
Django 进阶
1. 视频
中文视频内容有很多,但是从内容的深度、广度、教学实践、教学质量来看,推荐慕课网的强力 Django 内容。
- 强力django+杀手级xadmin打造上线标准的在线教育平台 慕课网付费课程。虽然收费,但是课程质量上佳。内含一个 refresh 的小项目和一个较大的系统项目,涉及 Django 的内容较广,完成后可以达到上线标准。常被誉为“Django课程的良心之作”。
英文视频中,美国的 Justin Mitchel 长期专注于做 Django 培训。他的部分教学视频也放在 YouTube 上。推荐三门系列课程,分别是完成一个基本博客,增加复杂功能,到使用 django-rest-framework。内容详实,值得一看。
2. 书籍
-
Two Scoops of Django:目前有两个版本 Two Scoops of Django: Best Practices for Django 1.11 和 Two Scoops of Django: Best Practices for Django 1.8 。这本书在 Django 的名气也是非常大,基本可以说影响过大多数 Django 开发人员,如果要进阶称为 Django 专业开发者,这本书是绕不过去的必看书籍。内容主要涵盖 Django 的最佳实践。
-
Django By Example 在进阶的课程中,本书算是不错的。虽然一些章节(比如第7章)部分代码仍然存在 bug,但是一方面作者正在该书主页不断进行代码更正,另一方面也是对中国读者最好的是,这本书已经由同在简书的 @夜夜月 进行了全书翻译:《Django By Example》中文版。
-
Django Unleashed 内容覆盖较广,很多内容在其他书籍中并没有提及,比如密码的hash与加密等。但是没有实战项目。
-
《Python Web 测试驱动方法》 虽然测试驱动的开发方法(Test-Driven Development,TDD)并不是每个项目都会采用,但是测试的思想与方法还是值得去掌握。Python 作为一门动态语言,没有静态类型检测的情况下,测试的重要性就显得尤为重要。本书使用 Django 的整个开发流程作为实例,作者不仅讲了开发过程单元测试和 Selenium 测试,同时也把部署的内容也覆盖到。内容始于 Django,但不仅仅是 Django,相信使用其他框架的 Python 开发者也可以从中获益匪浅。
3. 博客
-
Vitor Freitas: Simple is better than complex 作者是旅居芬兰的巴西人,博客上有76篇关于 Python、Django 以及网络开发的文字。文章质量较高,可以邮件订阅。
-
Huang Huang 的博客 之所以提到这个博客,主要因为作者认真写了三篇关于《High Perfomance Django》的阅读笔记:笔记一、笔记二、笔记三。从数据库优化、缓存、容灾、后台视图完善,这些一点一滴的内容都是 Django 项目开发过程中迟早会遇到的瓶颈,看一下这些内容也许就会对后面的解决方案有更深的理解。比如『话说Django orm性能为什么比原生的mysqldb慢』这篇文章就遇到了后台报表页面打开很慢的坑,这也是完善提高 Django 性能的地方。
Django RESTful API
Django 的 REST 化主要是两个第三方包:django-rest-framework 和 django-tastypie。虽然后者开发时间较早,但是最推荐的是前者,即 django-rest-framework。该框架内容更全,调试也方便。
1. 文档
django-rest-framework 的文档分为英文和中文。英文就是原版的网站,中文有两个作者的翻译,但都是只翻译了入门部分。
- 英文版文档
- 中文文档有两个,可以对照看:中文文档 Roy 版本 以及 中文文档 Eason版本。
2. 视频
-
Vue+Django REST framework 打造生鲜电商项目 可能是目前中文 Django 教学视频中最好的课程,教学时间长度与内容都有相当的保证。视频作者 Bobby 详细阐述了自己对的 Django 的理解,可以让人知道多种递进式 rest API 开发方式。得益于 Bobby 精益求精的态度,个人觉得干货的程度即使与国外的内容比较也是不逞多让。另外再加上与 Vue 前端的整体交互综合开发,已经可以初步满足一个中小企业的网络解决方案。
-
Build Your Own Backend REST API using Django REST Framework 作者是英国人 Mark Winterbottom,编程专业,而且讲课细致到位。
- Blog API with Django Rest Framework 仍然是之前提到的美国人 Austin Mitchel 的 YouTube 课程。
3. 书籍与博客
- 《轻量级Django》 英文版是Lightweight Django: Using REST, WebSockets, and Backbone,严格来说这不是一本完全讲 rest-framework 的书,而是讲解如何从传统的 Django 过渡到前后端分离 Django 。
- Building RESTful Python Web Services 内容涉及 Python 三大网络框架:Django,Flask以及Tornado。
- Haiiiiiyun:Django REST 框架 V3 教程,讲到 rest 的7门课程。
Django 业界最新信息
- Django: Under The Hood 专注于 Django 的内容,虽然著名的 PyCon 经常请 Django 专家去演讲,但是 Django: Under The Hood 基本都是 Django 的大牛,比如2016年压轴演讲是邀请了 Instgram 的后端去讲解 INS 如何用 Django 做成了如此规模巨大的社交图片分享网站。该组织近两年的演讲内容都分享在 YouTube 上可以找到。Django Under The Hood:YouTube地址
- PyCon 也非常关注 Django 的发展。Django 并非完美无缺,在网络技术高速发展的今天,Django 也需要及时的进化以适应形势。在 PyCon 上,对 Django 热爱程序员们,提出了尖锐的 Django 问题,随后也有新的解决方案出来。的有代表性的演讲包括:
- Why Django Sucks - PyCon SE 2015 作者提出 Django 在某些方面跟不上网络技术的发展趋势,提出了自己的三点建议。
- Reinventing Django for the Real-Time Web - PyCon 2016 作者是 Django 的 Channel 部分的开发者,专注于 Socket 的包装与编程,以实现 Django 的服务器推送、异步 Socket 等功能。
- Building Dynamic Dashboards With Django and D3 - PyCon US 2016 比较好的把 Django 与 React 以及 D3 结合在一起为警局提供数据看板项目。
修改记录
2017-10-23 更新内容
- Python 基础部分:不再推荐《Python学习手册(第4版)》。基础书籍数量保持三本,增加推荐新书籍,本书不再推荐。
被删除内容:
《Python学习手册(第4版)》 (Learning Python, 5th Edition)本书中文是第四版,英文已经更新到第五版。该作者长期从事 Python 教育,他知道学习者通常会问什么问题,所以讲解也是比较详细。如果你需要快速入门 Python ,不推荐这本书。但是相信你在 Python 进阶过程中,迟早会遇到一些很 Pythonic 的问题,比如:字典的三种创建方式、列表推导式(list comprehension)和装饰器(decorator)。你可以在这里快速找到详细的讲解。作者的另外还有两本高质量的 Python 书值得一读:Python Pocket Reference: Python In Your Pocket (Pocket Reference (O'Reilly)) 以及Programming Python: Powerful Object-Oriented Programming。
-
Python 基础部分:增加推荐《Python 基础教程》
-
Django 进阶部分,2. 书籍:增加《Python Web 测试驱动方法》。
-
Django 进阶部分,3. 博客:增加 "Huang Huang 的博客"。
-
Django RESTful API,2. 视频:增加 "Vue+Django REST framework 打造生鲜电商项目"。
-
修改部分格式错误。
2017-10-27 更新内容
- 增加对 Django 版本的说明