怎樣才能徹底掌握flask?怎麼個學習順序比較合理?
只了解基本的python語法。看了the foudation of python web programming的web部分,感覺沒啥收穫。wsgi在看,但看不懂。。有點不知道從何學起了。。。大蝦們指點一下吧。
我有很多東西在一開始也看不懂,反而是在自己寫項目和工作中去領悟出來的。單靠看書、看博客肯定不夠,一定要邊學邊練。我給你分幾步:
1. 了解理論。也就是你要清楚「視圖」、「模板」、「模型」、「MVC」、「中間件」、「REST API」這些使用Web框架要用到的東西。我個人當時也是看了很多相關的文章,但還是一知半解。
2. 了解一些Linux、網路、資料庫的知識。要求就是能在Linux執行一些系統命令,安裝包,使用資料庫寫SQL,知道TCP/IP這些內容。
3. 看Flask的官方文檔。英語不好也可先找中文的看,但是還是推薦直接看英文的,因為有些翻譯的理解和原意還是有誤差,容易誤導。
4. 只寫後端。也就是只寫Python部分,甚至不涉及模板。先寫一個小的應用。比如仿 https://github.com/Runscope/httpbin ,它就是Flask寫的,你看著網站可以先簡化一些不會的東西。直到你知道了怎麼路由,怎麼返回JSON格式的內容。
5. 學習寫模板。可以把你做的應用加上模板,實現更複雜的功能,當然這個時候頁面很簡陋。
6. 學習在Flask應用中操作庫。建議MongoDB和MySQL都要熟悉一下,這是時候也要學習些HTTP METHOD都有哪些以及在什麼場景下該用哪個方法,趁機也了解下HTTP狀態碼。這個時候HTTP協議可以去學了,建議去讀《圖解HTTP》,看的輕鬆。
7. 還是學一些前端的內容,前端包含HTML,CSS和Javscript,先從w3cshool開始,這個時候建議買幾本對應的書看看。了解Ajax,知道如何讓前後端通過Ajax通信。
8. 學習前端框架,對於新手,我建議學習bootstrap和jquery這2個庫,熟悉了它們前端部分就告一段落。
9. 這個時候你已經有能力寫一個相對有意思的網站了,你該找點創意做個大事。也就是看起來比較遙遠的目標。比如寫個小知乎,仿個開發者頭條之類的。你得考慮session、管理後台、登錄與註冊、Oauth2、安全這些大型網站齊備的內容。
10. 從9過度到這裡還是要花不少時間的,走到這裡,網站基本知識就差不多了,那麼你要了解一個網站的架構了,比如緩存,文件系統,分散式,服務化,反向代理、CDN、DNS等等,推薦一本好書: 《大型網站技術架構 核心原理與案例分析》(李智慧)【摘要 書評 試讀】,一定要看看。
11. 產品準備好了,你得研究下測試和持續集成,如何快速部署和回滾,如果及時發現問題,出現了性能問題怎麼DEBUG和優化等知識。
嗯,差不多未來1年你有的忙了。
如果你認為用flask寫了項目就是會web開發了,naive,我的觀點是儲備其他知識要先於深入理解flask,建議在9的初期再可以買本《Flask Web開發:基於Python的Web應用開發實戰》看看,或者考慮買我的書 ^.^
但是最好的學習Flask的辦法就是去讀它和它的依賴的源代碼。
但是最好的學習Flask的辦法就是去讀它和它的依賴的源代碼。
但是最好的學習Flask的辦法就是去讀它和它的依賴的源代碼。
重要的事情說三遍
歡迎關注本人的微信公眾號獲取更多Python相關的內容(也可以直接搜索「Python之美」):
http://weixin.qq.com/r/D0zH35LE_s_Frda89xkd (二維碼自動識別)
推薦Flask Web Development這本書,循序漸進每一小節都有git tag,很方便看代碼。不要太關注細節,如你提到的wsgi,先整體,後細節,而疑惑就需要自己進入源碼找答案了。
要深入學習還是需要看源碼,了解flask的原理。比如context,request, session的原理;如何增加模板filter,如何注入方法;flask_sqlalchemy的db session也是構建在context上,具體原理;flask_cache的細節,memoize如何通過類方法清空實例方法的cache;jinja2的filter.py中的filter是否熟悉,bccache是否對你有用,深入了解模板原理。
當遇到阻塞請求,如調用外部api時,如何提高系統吞吐量;用flask如何實現長連接(Comet)。。。(藉助gevent,想明白後你就會發現其實tornado最有優勢的優點其實不過如此)其實單純的一個框架是有限的,難點在於如何和其它組件更好更高效的工作。首先必須贊一下 pocoo,pocoo 的文檔很規範,解釋得很清晰。建議樓主直接看英文原文來學習 Flask。
接著回答問題。我認為學習 Flask 難點不在於如何使用 Flask,而是對 Python 的使用,以及對 Web 框架的理解。理解如何使用 Web 框架開發網站的話,Flask 學習起來應該是很順利的。有一些概念是需要明白的,例如 MVC 開發模式、Route 定義、HTTP Method 之類。當然 Flask 還有自己的特點,如 Blueprint 和 Testing 部分,建議樓主學一學。對 Flask 框架基本了解之後,可以看看 Github 上一些基於 Flask 的網站源碼,例如 June (pythoncn/june 路 GitHub) 。最後,聰明的開發者是不會自己早輪子的。下面是 Python-China 一網友收集的 Flask 資源:humiaozuzu/flask-dev-bookmarks 路 GitHub
https://github.com/humiaozuzu/flask-dev-bookmarks/blob/master/plugins.md以下內容節選自我的博客《Flask入門指南》,不知道對你有沒有幫助。Flask 入門指南--------Flask入門
Flask上手非常容易,僅僅看完Flask官方文檔中的Quickstart部分,就可以實現簡單的網站了。當然,網站看起來好不好,與html, CSS和js水平有關,這不在Flask的使用範圍之內。
Flask精通若要精通Flask,僅僅通過Quickstart快速入門完全不夠,那怎樣才能把Flask用好呢?用好Flask沒什麼特殊的捷徑,靠的依然是『多使用、多思考、多看他人優秀的代碼』,經驗可能是編程世界裡最恰當稱之為掌握新技術的捷徑的東西,而經驗的積累卻又是一個漫長的過程,靠的也是『多使用、多思考、多看他人優秀的代碼』。Flask的精通要靠自己努力,優秀的資料可以分享。我在這裡推薦幾個我覺得不錯的資料,歡迎大家補充。
(1) Flask官方文檔
Flask官方文檔寫的還是相當不錯的,作為學習Flask的第一手資料沒有問題,且Flask官方的Snippets,對開發很有幫助,也能避免開發者花太多時間考慮重複的輪子如何開發
(2) Flask Web開發
這本書相當不錯,通過這本書的學習,基本能做到Flask從入門到精通,也是我建議的第一手Flask學習資料。書中介紹的Flask構建大型項目的架構方式,很是受用,很有實際意義。
(3) miguelgrinberg.com
上面圖書作者的博客,是積累Flask開發經驗的好資料
(4) Write a Tumblelog Application with Flask and MongoEngine
這是MongoDB官方文檔中的一個教程,也是學習Flask開發的一個很好案例,尤其適合Flask+MongoDB開發的應用場景
(5) Flask 源碼
Flask 本身是一個非常優秀的Python庫,閱讀其源碼對理解Flask及提高Python開發水平非常有幫助。
(6) The Hitchhiker』s Guide to Python!
這個資料雖然不直接與Flask有關,但對初學者,絕對有學習的價值
我這裡有兩個Flask的項目,非常適合用來入門。可以說,是目前互聯網上質量較高的Flask學習資料。這兩個項目的每一個commit都被精心準備,用以演示一個功能。並且,每個commit都能夠運行。通過運行各個commit查看界面的變化,以及通過代碼變更查看功能實現,對大家學習Flask開發,有很大的幫助。
項目一:今日頭條
今日頭條項目就是將各大網站的新聞頭條和天氣預報拿過來,做了一個聚合操作。這個項目不涉及前端、不涉及資料庫,只涉及爬蟲(一點點),也沒有用到Flask插件,所以非常簡單,很適合用來入門。
github地址:lalor/headlines
項目二:todo list
todo list(lalor/todolist)是代辦事項列表,效果圖如下:
支持登錄、退出、增加todo、刪除已完成的todo、修改未完成的todo。使用到的插件包括Flask-Bootstrap、Flask-wtf、Flask-SQLAlchemy和Flask-login。當然,還有一些沒有實現,這個項目主要用於教學用,方便新同學學習。
希望大家喜歡。
看源碼最快
動手寫最快,先實現增刪改查,再一步一步增加功能。
1、增加分頁
2、增加評論3、增加用戶註冊、登錄、註銷。4、增加用戶郵件驗證、增加驗證碼。5、增加RESTFUL API。。。。。。。。。1. 最起碼理解網路,http這層肯定要理解
2. 熟悉python,這是個過程,學習加實踐3. 學習官方文檔,官方文檔是最全的也是意圖最明確的。4. 寫demo,不會寫多看看別人怎麼寫,自己就會了。5. 研究某一點,深入到源碼,有時候源碼也看不懂可以請教一下其他人。
對於想深入flask內部我覺得由簡到難需要看的(自己感覺)。
1. config原理2. 路由原理3. Wsgi介面調用4. 理解session5. 理解threading.local6. 理解flask自己封裝的thread local7. 理解g和request8. 理解app context和request context每個人的基礎不同,接受知識的能力不同,路線也不可能完全相同。學習過程並不是一條直線,而是彎彎曲曲無法描述的曲線。說這些並不是危言聳聽,也不是打擊積極性,更多是的是希望題主正視這個問題。在自己學習的過程中我被老手噴過,被新手嘲笑過,也跟人互噴過,就是這麼曲折。而我覺得最重要的 就是 你有一個明確的目標,你可以不知道代碼是做什麼,可以不了解裝飾器,不了解任何東西,但是你要知道你現在做什麼。我覺得這才是最重要的,而不是長長的列出一個單子,第一天做什麼第二天作什麼,因為你會完不成你的任務,當然你可以把目標定的小一點,問題是你怎麼會知道哪些目標小,哪些目標大呢?即使在老手看來很簡單的概念,對於新手來說也是一條鴻溝。這就是小馬過河,老牛覺得淺,松鼠覺得深,其實沒有任何參考價值,聽一個樂就好。至於工作,大家認真努力的樣子,很迷人。和有趣的人做有趣的事情。
其實無所謂WSGI之類的東西。我自己一直做演算法、策略、數據相關的工作,幾乎不會web開發。但是偶爾還是要做一些小工具小demo,所以也需要自己寫一點小的web app。所以對於我這種,大致理解web開發的基本原理,入個門就行,真正用的時候知道怎麼查就OK。如果是專業寫web app的人,那麼還是需要通過實際項目的洗禮。
我自己學Flask,主要就讀了《Flask Web Development》,然後take一些notes,能達到入門然後自己寫寫小工具、小demo的水平。
讀完這本書以後,總結起來就一張圖(原創):
(看的英文原版,做notes的時候也是用英文,但鑒於我半吊子英文水平,如果有語法錯誤、用詞錯誤的,請指正)這個圖基本上涵蓋了Flask的所有核心feature:
1. 把客戶端的請求封裝成Request對象直接給你2. 定義一下路由規則(Route),什麼函數處理什麼URL3. 寫一下處理請求的業務邏輯(View Function),接到一些請求要做什麼事情返回什麼4. 小應用、小工具就別用template了,直接在view function裡面返回就得了5. Blueprint在小應用的時候就別用了,應用變大的時候再用,它就是用來進行代碼組織的6. 各種插件最有用的就是WTForm,做表單的時候異常簡單部署的話,小應用、小工具,Flask自帶的web server直接用就行。要對外服務的時候前面掛Guniform,搞nginx反向代理再研究。最重要的是先把核心業務邏輯實現了再說。
在學的時候可能會因為基礎,糾結以下幾點:
1. context variable怎麼理解 -- 接受它就行了,甭想它怎麼實現的,給你的request就是當前請求,甭糾結看上去很奇怪2. decorator是什麼東西 -- 第一次遇到肯定是路由的時候碰到,就當是特殊語法就完事兒了。先粗枝大葉對Flask整體有個印象以後再來細究怎麼用decorator實現路由。3. 用ORM的時候會遇到descriptor -- 整個ORM大概看看知道個概念,知道能幹啥就行了。等真正用的時候再看。這本書吧,重點把第一部分看完(看兩遍或以上)就能比較清晰地理解web開發的基本邏輯和Flask的基本邏輯。第二部分並不是必須,但確是一個非常好的walk through。
最後,這本書雖然是2014年的,但現在看也不過時。直接看官方文檔,寫的很清楚;看The Flask Mega,很快就能入門。開源中國上有翻譯。github上的flask相關項目拿下來看看
我們都知道,想要精一行,必須通十行。
比如你想精通Flask,就不僅僅是要整天專研Flask,還需要你懂HTML、CSS、JavaScript、python、SQL,當你程序寫好了,要部署還需要懂Linux,懂運維。
所以在「徹底掌握flask」這條路上,建議除了學習flask之外,還要把精力放在Web前端後端的「本質」的學習,flask只是術,而後者是道。flask?很難學嗎?
wsgi可以看很多的例子,比如這個http://archimedeanco.com/wsgi-tutorial/flask本身簡單到不能再簡單,所以如果你覺得難,那麼顯然是沒學好基礎,建議你先從基礎學起,比如web開發基本知識:session管理啊,template啊神碼的,然後學flask一天就差不多了……同在學flask,本來看中文教程,現在準備放棄。。
在跟著教程做的時候,遇到幾個問題:1.自己不理解Web開發的基本知識,不知道Web框架應該有哪些作用2.中文文檔坑啊!步驟 2: 應用設置代碼這裡,步驟2後面的鏈接是步驟4(坑了之後才發現鏈接錯誤),跟做完後無法運行,對照英文文檔後發現還漏了一些代碼沒說到。。打算按之前答案說的,先了解Web框架的基礎知識吧。剛剛搜了一下,推薦這篇文章:【譯】什麼是 web 框架?學flask看這個教程 The Flask Mega-Tutorial, Part III: Web Forms 特別好
比較好的教程
模板 — flask mega-tutorial 1.0 documentation
當然也可以看英文原版
The Flask Mega-Tutorial, Part I: Hello, World!
幾個例子:
1 Simple Flask Example
2 GitHub - mattupstate/flask-social-example: An application that serves as a working example for Flask-Social
個人也正在學習,不過在徹底掌握之前,個人認為順序如下:先去學習 HTML 再去學習 Jinja 2 模板語法,最後再看 Flask 官方文檔!
每看到一個API,一個功能,先把他用順了,看栗子和文檔就夠啦,更重要的是再深挖一下內部實現,然後你會發現基本原理爸媽都能聽懂。
跟著flask web development這本書在一步步操作 但是一會兒該這個文件一會兒增減那個文件 不知道為什麼要這樣
看國外優秀開源項目的源碼,比如Flasky開源社交博客的,裡面涉及的不僅僅是Flask,就像前面的朋友說的,前端後台,Linux,網路,資料庫,還有很多你需要去了解。
我想跟著這個問題問問各位,根據以上的回答呢,我覺得要學flask,首先得學習一部分網頁開發的知識,然後是要能熟悉運用python進行編碼,最後再看flask文檔或項目源碼跟著學,我這樣理解對嗎?同時我也想問問如果學flask需要先學習一部分知識,就像前面有人說的「web開發基本知識:session管理啊,template啊神碼的」,能不能具體講講這部分「必要知識」是什麼?(因為我是先學python編程的,現在想轉入用python做網頁開發,所以想問問有哪些「基本知識」要學,求幫忙!)
我11年開始使用flask,我的建議是不要看任何中文資料。入門:官方的文檔就絕對夠了,對python的理解也很有提升:Welcome to Flask進階:從github上找基於flask的優秀開源項目
@董偉明 大大都說了很多你寫Python熟練之後的提升,我來說說之前吧。
所謂基礎語法是指循環,選擇和順序執行吧還有很多東西要學:字典,列表,集合,lamdba表達式,切片,生成器……還有很多東西,去看看@廖雪峰 大大的教程吧,看完才敢說自己懂基礎吧。學好以下三點我覺得對於flask的使用會有質的突破:
一:裝飾器二:類以及類的繼承與多態三:flask是web服務,那麼至少要懂web基礎吧,HTTP要懂吧提高的唯一途徑只有練習。先從爬蟲開始吧…
最後@知乎小管家 ,發現一個bug,在匿名身份下,點擊右上角依舊是使用匿名身份…bug重現過程:使用匿名身份回答問題,保存發布。在查看回答時,點擊右上角依舊是匿名身份。此時點擊右上角使用匿名身份,再次點擊右上角是取消匿名身份。感覺這玩意是保存在本地未上傳啊,哦,找工作中,貴乎收不?推薦閱讀:
※Django 有哪些局限性?
※Python有哪些殺手級超牛逼框架或庫或應用?
※PHP 比 Python 牛在哪?
※CPython是什麼?PyPy是什麼?Python和這兩個東西有什麼關係呢?Python的底層使用什麼語言實現?學習Python需要學習底層實現嗎?
※requests 和 scrapy 在不同的爬蟲應用中,各自有什麼優勢?