今天聊下Python Web框架,Python Web框架大致分成三類,分別是Full-Stack Web框架、Non Full-Stack
Web框架、Asynchronous 異步框架。
什么是Web框架
框架的意思就是把基礎的,常用的功能都寫好了。比如:URL分發(fā)(路由)、數(shù)據(jù)庫讀寫(ORM)、表單,admin后臺管理等,
你只需要理解怎么調(diào)用這個框架,讓你把精力放在業(yè)務邏輯實現(xiàn)上。
框架怎么分優(yōu)劣
我們通常說的某某框架用起來舒服,用起來方便,是基于哪些考慮的呢?
我相信不同的開發(fā)人員說出的原因是不一樣的。有的喜歡功能強大的框架,有的喜歡易上手的框架,有的喜歡小巧,配置靈活的框架。
有的開發(fā)者喜歡框架功能很全,不用自己造輪子,比如Django框架,它提供的功能非常全面,比如(cache、session、登陸、auth授權等等),和它強大的中間件,提供全方案Web開發(fā)支持。我們把這種框架叫做Full-Stack
Web框架。
當然功能強大和全面的反面就是有點復雜(相對的),有點臃腫,不太靈活。所以Django上手要慢一點,自己造一個輪子替換Django某些內(nèi)置功能或者使用第三方功能時不太靈活。
有的喜歡框架小巧,靈活,就像Flask框架一樣。跟Django相反,F(xiàn)lask小巧、靈活,它的很多功能需要開發(fā)者以插件的形式向里安裝,你也可以自己定制。這類不提供全方案開發(fā)支持的框架,我們叫做Non
Full-Stack Web框架。
有的喜歡速度,喜歡框架本身的速度很快,喜歡I/O性能吞吐高并發(fā),像Tornado和Sanic框架。它們是異步框架,I/O性能相對就高一些。當然異步編程的理解難度要大一點。
上面解釋了什么是Full-Stack Web框架、Non Full-Stack Web框架和Asynchronous
異步框架。下面具體介紹這三個下面的代表框架。
一、Django
Django是Full-Stack Web框架的代表,功能非常全面和成熟,開發(fā)文檔很完備。它在Python
Web開發(fā)框架的占有率應該是第一。Django的宗旨就是盡可能的提供所有功能,讓你用盡可能少的代碼完成業(yè)務。官方的說法是,如果你的開發(fā)日期非常緊,那么選用Django是正確的做法。
我們自己開發(fā)的項目也全都選用的Django。
缺點:
在urls.py里配置URL路由有點麻煩;
模板不能像php一樣在模板插代碼;
數(shù)據(jù)庫ORM組裝出來的sql語句性能較差;
二、Flask
Flask算是Non Full-Stack Web框架代表,是一個輕量級的Web
Framework,它在中國的應用其實挺廣的。它的設計目的是幫助構建一個穩(wěn)定的Web基礎應用。它的靈活性體現(xiàn)在,它的模塊化設計可以輕松適合開發(fā)者的需求。Flask跟Django比起來,你可以自己造輪子,也可以是以插件的形式使用第三方庫。使用Restful
request的風格,很適合開發(fā)web api,F(xiàn)lask也更加pythonic。
今天正好是愚人節(jié),其實Flask是在2010年4月1日愚人節(jié)這天發(fā)布的,作者本意是想在這一天整蠱一番的,誰知Flask在后來卻越來越火了。
關于怎么快速學python,不管你是小白還是大牛,小編我都歡迎,不定期分享干貨每天晚上20:00都會開直播給大家分享python學習知識和路線方法,群里會不定期更新最新的教程和學習方法,大家都是學習python的,或是轉(zhuǎn)行,或是大學生,還有工作中想提升自己能力的,如果你是正在學習python的小伙伴可以加入學習。最后祝所有程序員都能夠走上人生巔峰,讓代碼將夢想照進現(xiàn)實
三、Tornado
Tornado其實也是Non Full-Stack Web框架。因為它支持異步,所以就單獨說一下。
跟上面Django和Flask比起來的話,好像沒啥可說的了,就是IO性能優(yōu)秀。官方說能支持1萬個并發(fā)請求。適合一些高并發(fā)項目。
因為一些原因,我對Tornado的印象不太好。16年的時候公司收購了一個項目,然后我去杭州接手這個項目的技術部分,系統(tǒng)是用Tornado開發(fā)的。團隊是從杭州大廠出來的,設計得非常繁復,說是要支持4萬并發(fā)的業(yè)務。但是到我們買的那天,業(yè)務連4千并發(fā)都不到。接下來的一年公司為這個項目付出了很大代價。
”
當然在Python3時代,異步框架還有其他的,比如Sanic,性能測試對比顯示,Sanic比Tornado快幾丟丟。猿人學網(wǎng)站除了有Python教程,我也正在寫Sanic教程,感興趣的可以去看看。
說了這么多,如何選擇Python Web框架?
如果你要開發(fā)一個大型項目,比如電商系統(tǒng),需要各種各樣的功能都具備,那么使用Full-Stack
Web框架是第一選擇。如果是一個像內(nèi)容系統(tǒng),功能有限,不需要面面俱到,那么用Non Full-Stack是第一選擇。
Python
Web框架大約有30多種,我介紹了幾個典型的和運用面比較大的,上面三種在國內(nèi)的公司中也是運用比較廣泛的,能熟練用其中一種做開發(fā),應該可以找到個web開發(fā)工作。
熱門工具 換一換