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 参考资料。

3. 书籍与博客

3.1 英文

另外有人也经常推荐以下内容,供参考:

3.2 中文

  • 自强学堂:Django 教程 内容详实免费。值得一提的是作者使用 Django 建站,完全是在实践 Django 的使用,而且作者从2015年至今一直在根据 Django 版本升级而更新教学内容,从最初的 Django 1.6 更新到了 Django 1.10。作者称最新版本的 Django 1.11 内容马上就要推出。

Django 进阶

1. 视频

中文视频内容有很多,但是从内容的深度、广度、教学实践、教学质量来看,推荐慕课网的强力 Django 内容。

英文视频中,美国的 Justin Mitchel 长期专注于做 Django 培训。他的部分教学视频也放在 YouTube 上。推荐三门系列课程,分别是完成一个基本博客,增加复杂功能,到使用 django-rest-framework。内容详实,值得一看。

2. 书籍

  • Two Scoops of Django:目前有两个版本 Two Scoops of Django: Best Practices for Django 1.11Two 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-frameworkdjango-tastypie。虽然后者开发时间较早,但是最推荐的是前者,即 django-rest-framework。该框架内容更全,调试也方便。

1. 文档

django-rest-framework 的文档分为英文和中文。英文就是原版的网站,中文有两个作者的翻译,但都是只翻译了入门部分。

2. 视频

  • Vue+Django REST framework 打造生鲜电商项目 可能是目前中文 Django 教学视频中最好的课程,教学时间长度与内容都有相当的保证。视频作者 Bobby 详细阐述了自己对的 Django 的理解,可以让人知道多种递进式 rest API 开发方式。得益于 Bobby 精益求精的态度,个人觉得干货的程度即使与国外的内容比较也是不逞多让。另外再加上与 Vue 前端的整体交互综合开发,已经可以初步满足一个中小企业的网络解决方案。

  • Build Your Own Backend REST API using Django REST Framework 作者是英国人 Mark Winterbottom,编程专业,而且讲课细致到位。

3. 书籍与博客

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 问题,随后也有新的解决方案出来。的有代表性的演讲包括:

修改记录

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 版本的说明
    原文作者:Tim_Lee
    原文地址: https://www.jianshu.com/p/cb76310bc0e2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞