學習Flask需要什麼基礎?
懂Python的基本語法和HTML、CSS、JavaScript,但學習Flask的時候發現很多不明覺厲的代碼,又是headers又是request的,而且還有關於json的知識。
據說Flask很簡單易學的,為什麼我學起來這麼吃力。。,難道還要有http協議的基礎嗎。PS:看的教程是極客學院的python教程里的Flask小節知識。希望有人能指教一下。
多謝 @郁一 邀請
老實說我這實力不敢當啊。。。教別人什麼東西我一貫是很怕的。。。怕教錯了,或者這點水平有班門弄斧之疑。。。但是這位前輩邀請了我很多次。。我就厚著臉皮答吧。。
首先一開始Flask作者是先寫了這個庫pallets/werkzeug,然後去找bottle的作者說自己寫了個很好的WSGI,問他用不用,bottle作者沒怎麼鳥他,flask作者才寫的flask,這裡bottle和flask都算是非常優秀的框架,代碼可讀性也很高,這之中,flask主要是基於了pallets/werkzeug 和 pallets/jinja 這兩個是flask 的基石。。。推薦至少閱讀下她們的文檔,而且我記得前年就已經有愛好者翻譯了文檔了
接著你讀flask的文檔就行,flask文檔已經算是文檔楷模了。。。我用過不少包連文檔都沒有,,,我得一個個的去讀源碼裡面的模塊,要是模塊化做得不好的話,我用的都要哭了。。。索性就自己糙一個
然後我推薦你閱讀PEP 333 -- Python Web Server Gateway Interface v1.0
這個才是python的web編程當下的基石,你基於這個再自己寫一個框架
salamer/jolla
比如這是我大二寫的。。。這個框架源碼很傻逼。。。當年年輕不懂事。。。
但至少可以給你的借鑒意識,框架到底都做了啥,之後你在閱讀flask源碼就很輕鬆了,再之後你就會發現。。。。其實有時根本不需要框架。。。有個wsgi我就有了全世界。。。再之後你就會發現現有的wsgi性能不能滿足你,你又去用c hack wsgi去了。。。。
這上面有什麼我說錯的地方請指出。。。教人東西真是誠惶誠恐。。
題主,你不僅僅是http協議的基礎缺了這麼簡單,你Python的基礎就沒打牢。你按其他答案懂了http協議的基礎,回頭一個SQLAlchemy又會難倒你;你會了SQLAlchemy,之後要用到裝飾器,那詭異繞腦的邏輯又會難倒你;你懂了裝飾器,回頭你需要後端傳數據前端Ajax技術配合,相關的內容又會難倒你。你這種情況的人我遇到過一些,通過網上視頻教程入了門,但是沒有系統的學習相關的知識,而系統的學習,多半只能在圖書里達成。所以,先系統的看一些相關的書,而不是某個或某些知識點,待完成系統入門學習後,碰到專門的問題,在專門的學習攻克和研究。我其他回答里有涉及相關讀物的介紹。
題主,我能理解你的那種迷失感。在最初學編程的時候,我十分不理解for循環,無師自通摸索出break的巧妙用法的時候大吃一驚,自戀了好久。今年帶了一個新人,我上來就讓她用Flask,我覺得Flask太簡單了,只用了兩三句話給她說了下wsgi,route,view,template和request,然後我就直接扔給她任務了。我覺得任務這麼簡單,兩三天就能搞好了,結果人家小姑娘吭哧吭哧加班搞了半個月,才勉強弄完。
我中途有去了解她的進度,發現她不僅要惡補js和css,甚至於很多基本概念都不甚清楚。
例如分不清GET和POST,傻乎乎地在瀏覽器上測試介面,把GET返回的json文件下載到本地再用記事本一個個打開看結果。但是她連POST介面也是直接敲到瀏覽器中,弄了一下午才崩潰地問我為什麼不行的。我的建議是,把基本理論看完,上手練習,做不下去了再找資料,把坑都鑽一遍,你自然就會了。剛開始我也是這麼覺得的。
我花了一個多月才理解了模板引擎。是不是很不可思議?後來,SQLAlchemy 卻花了不到3天。很多東西都是,不會的時候千難萬能,學會了之後就覺得很簡單了。多點耐心,看不懂就看多幾次。
。
。。
其實這是雞湯。
根本原因是後來有人提點幫我打通了竅。自己獨立寫個前後端項目,從小的開始,比如個人博客,從沒有登陸功能,到設計有cookie,session的動態行為多一點的網站。既然你有H C J基礎,那麼請求頭這類應該不會不知道吧,request是請求的包含信息,其實也就是對WSGI的environ的再度包裝,response是響應信息。
HTTP協議基礎的東西其實也就那些,除非你要深入研究,那麼看協議文檔之類的真的很痛苦。打開你的Chrome或FireFox的開發者工具,查看Network中的文件,(只截取部分)。請求頭:GET /admin/series/5620b63556c483f74174d8ec HTTP/1.1
Host: 127.0.0.1
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like
Cookie: a_id=0.7100693550892174; username=zhg
請求頭其實就是瀏覽器默認的一些,還有meta標籤中的一些信息。
HTTP/1.1 304 Not Modified
Server: nginx/1.8.0
Date: Sun, 18 Oct 2015 11:30:12 GMT
Connection: keep-alive
X-Powered-By: Express
etag: "1224303714"
響應頭在你後端你可以自己構造,包括傳cookie等。
響應體也就是HTML了學習Flask難點不在於Python,而在於Web開發中的那些基礎。我建議你不要直接看源碼,如果對Web不了解,看源碼是看不懂作者的意思的。資料庫推薦你暫且先用NoSQL學習,比較輕巧,學習快,使用方便。
json其實也就是類似與Py字典格式的東西,用來數據交互的,這個比較簡單,其實沒什麼。Flask用來進行Python web開發時,基本的網路通信概念和數據交換格式,應該還是要知道的。也正在學習,Flask開發,目前用到的資料有:
1. 官方文檔(英文)
Welcome | Flask (A Python Microframework)2. 中文版入門介紹歡迎來到 Flask 的世界3. 實例開發《Flask Web開發:基於Python的Web應用開發實戰》我倒是最近用flask做後端寫了一個旅遊網站,個人感覺只有有點python的基礎,基本的模塊掌握了(如果和我一樣懶,你可以用python+想實現的功能的英文描述來Google),flask的話通讀它的文檔就好,一個微型框架沒有太複雜的東西,基本功能的實現都不用額外的擴展,答主我當時第一回用flask的時候不知道flask有辣么完美的擴展功能,login和admin功能都是自己寫的,後來發現有flask-login和flask-admin擴展簡直老淚縱橫。還有在用flask的時候,強烈建議你使用它的藍圖功能,模塊插拔能力肯定強。前端的話就是各種插件加自己的調整,不滿意的就自己寫,這樣既快而且還能學習到他人好的實現。一個功能簡單的網站不到兩個星期就可以斷斷續續的搭建起來。加油題主,你口以的(?????)
個人覺得懂得Python,知道http是怎麼工作,會HTML應該就差不多了。其他不懂的就搜索吧
……
這問題我都不知道怎麼回答……
我是完全0基礎,8小時的時間,用flask弄了個處理圖片的內網web-based app。。。
代碼總共300多行?
大部分時間都是在 Google 上搜索 python 怎麼 print;json 語法是什麼;怎麼解析、生成json;html 結構是什麼樣子;怎麼處理 post 和 get;怎麼保存用戶上傳的文件;怎麼打包 zip;怎麼將圖片處理成調色板GIF,用什麼庫生成調色板etc……
然後看到題主的問題……不知道題主為什麼會有這個問題…… [ 捂臉.png]
有Python基礎,知道怎麼用Flask插件,就沒問題了,不需要了解HTTP協議等知識。我自己也是用Flask開發了一個網站
推薦閱讀:
※關於學習Flask過程中Python虛擬環境的激活問題?
※希望用flask作為中介讓python和js交互,大家有什麼比較好的實踐經驗沒?
※《Flask Web開發》中程序的許可權為什麼用十六進位表示?
※在python3下怎樣用flask-sqlalchemy對mysql資料庫操作?
※微框架 Python Flask 和 Ruby Sinatra,哪個更值得推薦?