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 版本的說明
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370

推薦閱讀更多精彩內容