學習tornado/django/flask等python框架需要哪方面知識?

RT。我之前想學習這些框架,但是學了一些皮毛之後發現有點學不下去,總感覺少了哪方面的知識。想問問,學習這些框架需要哪方面的知識?該如何正確的學習?


我覺得 @盛迪說的對,先學,如果學的比較吃力就硬著頭皮學,在學的過程中才能發現哪些知識點自己不懂,把不懂的知識點羅列起來,比如在學習Tornado時覺得非同步,這個東西不太明白,就可以通過這一個知識點來展開如下學習計劃

  1. Don"t be afraid,硬著頭皮邁出第一步。
  2. google 何為非同步?非同步的概念?,搜索完之後你會發現又有很多沒見過的知識,然後在記下這些陌生的知識點,看完你所google的內容。
  3. 把第二步整理的知識點(可能耗時較長)羅列出來,整理在一張乾淨的紙上。可能包括阻塞與非阻塞非同步與同步,事件循環,I/O復用(select/poll/epoll),Linux進程管理等一大堆知識點。任何人看到這一堆陌生的東西都會感到害怕,甚至像題主這樣心生無力。毫無疑問,這是邁向第一步最為艱難的時刻。走出內心的恐懼就相當於成功了一半,剩下的無非就是如下云云。
  4. 把第三步陌生知識點大致google一番,記錄其基礎意義,做到洞察大局,略知一二,這樣會讓自己有個概念觀,略懂後自然而然就增加點信心。然後總結下你的知識點所涉及到的其他知識點,如此循環,用Xmind構建待學知識點關係樹。可能你在google的時候會有人介紹一些相關的書籍如《UNIX網路編程 卷1 (豆瓣)》等,記下這些書籍作為待讀。(注意:不要陷入死循環)
  5. 好了,現在你明白哪些知識點是自己不清楚的了,哪些書籍是自己需要讀的了。那就放鬆放鬆吧,看些簡單的東西,如把Django文檔first-steps Django documentation 好好看一遍寫個小程序。如果期間遇到web前端相關陌生知識點也可循環1、2、3、4步驟。搞一些簡單的東西後能更大的激發興趣,有了這些想繼續學的興趣後再繼續Next.
  6. 學完它!暫時不要著急去解決哪些陌生的知識點(解決它們或許比學一門框架還耗時),要記住你的初衷:學習一些python框架。繼續順著這些框架提供給你的文檔,順著框架知識脈絡繼續學。做的明了該框架的大概主體,反覆學習,畢竟你不是一蹴而就的,你還會回頭反反覆復翻閱文檔好幾遍,如果一直沉浸在繼續解決陌生知識點的情況下或許一年你都還沒看完該框架。
  7. 應用它!寫的越多,用的越多就越有靈感。比如flask多造一些輪子,如果是在公司則大膽引用(我一直很大膽的應用一些新的東西在公司的項目中,ps.公司就我一個後端 (囧.....))
  8. 系統性學習!幾番學習後抽個時間對你的未知知識點進行一次大掃蕩(或許你在寫在用的過程中一些知識點自己已經慢慢清楚了,這就是時間價值),然後總結出一些系統性的體系(如:TCP/IP協議,Unix網路編程)。如題主提到的都是web框架,那麼web框架無非就是python網路編程下對下層TCP協議以及應用層HTTP協議以附加的web應用構建如(路由,請求與響應,Cookie與Session,認證,數據處理,模板渲染等)以及ORM和進程管理等的處理。這些需要大量的學習才能逐漸把握的,這些東西隨便在豆瓣讀書一搜立馬出來推薦的書單或書籍,mark之,沒事的時候慢慢品悟。多讀書讀好書,久而久之就構建了自己的系統性知識了
  9. 第一步沒完成剩下全Over~

ps: 純屬個人建議,不帶任何色彩。

推薦看下淺談Python web框架


嚴格的說,需要的知識不限於:

1. HTTP協議及基礎概念

2. HTML/CSS/JS基礎知識(至少裡面說明了前後端怎麼交互)

3. 資料庫基礎知識

4. Python基本語法、概念、主要語言特性、包管理機制……

5. 具體要學的框架基礎知識、結構,以及所謂「哲學」

6. 英語,文檔/Wiki/StackOverflow/Github/搜索引擎使用、閱讀方法(遇到問題查資料找解決方案用)

然而基本上可以邊學邊接觸,其實也蠻省事的。


  • python入門

    • 推薦《python核心編程》
  • 前端開發(html、css和js)至少能大概看懂,會現學現用

    • 這個直接上w3c網站現學,以後可以深入學習
    • 了解至少一種前端框架如Bootstrap等
  • 掌握網路編程

    • Python網路編程基礎 (豆瓣)

  • 掌握資料庫編程

    • 重點掌握關係型資料庫的設計和建模
    • [11月1日編輯]補充下關於資料庫的建議:
      • 先了解下資料庫的基本原理,對於新手,至少把SQL語句學好吧,配合ORM的API,能夠熟練進行增刪改查操作
      • 學習資料庫的設計和建模;這一步你可能需要有較多的實際經驗才能達到熟練程度,但是在找工作的時候你需要具備這方面的基本能力
      • 學習資料庫性能調優;主要針對sql語句的調優,具備這方面能力將會成為你令面試官滿意的亮點。至於資料庫系統的內部調優,要求較少。如果項目中真的有這種需求,一般有架構師或者DBA專門來做
    • 書籍推薦(針對mysql):
      • MySQL性能調優與架構設計 (豆瓣)---適合初級web開發

      • 高性能MySQL (豆瓣)---中高級web開發進階必備
      • 資料庫系統實現 (豆瓣)---同上

    • 最後:
      • 時間充足的話建議了解redis、mongdb等新興資料庫技術,在很多python項目中有運用,也很適合作為技能亮點
        • 推薦:Redis實戰 (豆瓣)
  • 開始學習框架
    • 比如django,重點要理解MVC的設計模式,明白 「url路由-&>views視圖處理-&>orm資料庫處理-&>jinja模版渲染」 的脈絡,以及django強大易用的後台管理(個人建議從django入手,雖然比flask要重,但是社區資源更豐富,問答也更成熟)。
  • 英語(你需要查閱官方文檔)

    • 這個真的很關鍵!只看中文文檔或者國內中文網站資料,只能讓你入門而已。

這些知識點的學習順序可以隨意,最好是按照自己的興趣來,如果學習某個知識的時候遇到了阻塞,不要停留太久(滯留越久,越容易失去信心和興趣),轉向另一個知識點。事實上同時學習幾樣技能,可以相互融會貫通,互相啟發,更有利於持續學習和全面理解哦!

網路編程和資料庫編程!

網路編程和資料庫編程!

網路編程和資料庫編程!

重點學習這兩個,是web應用功能實現的基礎!

如果想要做漂亮的web應用,那就深入學習前端開發,重點是框架的使用(如Bootstrap等)。

最後,自己一定要寫幾個web應用玩玩。可以先找些教程跟著寫幾個;然後一定要有一個是按照自己想法獨立實現的(例如個人博客),這一步會讓你開始感受到成就感!


項目驅動學習!

有明確的目標,或者有明確的要求,或者個人極為喜好,或者不學就沒飯吃,的情況下就去努力的學吧。

有了目標就使勁學,拚命學。不死不休。頁面渲染、url設計、HTTP知識、工程代碼結構設計、ORM或者直接資料庫查詢的方法、資料庫設計、緩存的使用、服務的打包構建部署、服務的水平擴展性等等,哪裡遇到問題就網上搜使勁查拚命啃。

沒有目標的話,建議還是別學了,真的,不是打擊人,而是漫無目的學的東西及時掌握了一時,在不久的將來也會很快忘掉……


python

HTTP基礎知識要了解

html

css

javascript要知道點

資料庫

恩差不多就這些了,不是都要學會,而是在學這些框架都要用到,比如資料庫,其實也就用個基本的增刪改查,但是沒有資料庫不行。


從0寫一個網站,比你乾巴巴的學,更有效率。

當然,這有一種缺點,學的不全。


標準庫標準庫標準庫


照著教程做項目,自己敲代碼。遇到不懂的,就回頭再看教程,查資料,弄懂為止。順便推薦下廖雪峰的教程和Flask Web Development: DEVELOPING WEB APPLICATIONS WITH PYTHON。


推薦閱讀:

Python web 開發一定要用框架嗎?有沒其它方法,類似 PHP 的語句?
在 Python 中,為什麼 pow 這樣的函數可以直接調用,而 floor 這樣的函數得先導入模塊?
如何開始在github上學習東西?
gitbash中只調用python沒反應但如果後面添加了具體.py文件可以執行,是怎麼回事?
在matlab2015a中如何調用python?

TAG:Python | Tornado | Django框架 | Python框架 |