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

來源:互聯網
上載者:User
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。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.