{eval=Array;=+count(Array);}
DjangoDjango是基于中間件的一個大型框架。框架本身的內(nèi)容相當(dāng)豐富,基礎(chǔ)部分:模版引擎、ORM、表單、路由分發(fā)這些標(biāo)配,還有不少的中間件:登陸、后臺管理,這些還是官方中間件,另外還有不少的第三方中間件。關(guān)于第三方的我沒有詳細(xì)研究過,質(zhì)量不太好評論。還有由ROR帶起的基于命令的Web開發(fā)方式和擴(kuò)展、還有內(nèi)建的數(shù)據(jù)庫遷移,基本上你呢想到的Django都有。可以說Django和Python相當(dāng)匹配,前者是Web開發(fā)的萬金油,后者是開發(fā)領(lǐng)域的萬金油。另外Django這個框架本身還有一個專門的基金會,這個基金會是由Django的母公司成立的,估計有不少用這個框架的公司也對期捐助過。框架本身相當(dāng)活躍,每隔大概8個月就有一個大版本。社區(qū)也是相當(dāng)活躍,官方的Community、非官方(StackOverflow)和IRC(據(jù)說IRC是比任何一個開源項目都要活躍)基本上你碰到的問題大家都會有解決或者Workout方案。FlaskFLASK框架本身只包含路由分發(fā),請求和響應(yīng)的封裝和插件系統(tǒng),在加上作者自己的Werkzeug(處理WSGI)、jinja2(模板引擎)和Flask-SQLAlchemy擴(kuò)展(Model層),這幾個同一個作者的項目構(gòu)成一個完整的MVC框架。對于Flask本身,一個微框架,這已經(jīng)足夠了,而且它也只能提供這么多。如果你需要表單處理,請安裝Flask-WTF;如果你需要基于命令的開發(fā)模式,請安裝Flask-Script和Flask-CLI(這是一個Flask1.0的backport模塊);如果你要登陸驗證,請裝Flask-Login;如果你要后臺管理,請裝Flask-Admin。什么?!你全部都要?請裝Django。對Flask就是這么一個框架。這是一個典型的社區(qū)項目,作者在實現(xiàn)了一個牛X的核心以后,就撒手交給社區(qū)。各個插件的文檔分散(雖然Flask曾經(jīng)出了一本書,試圖打通各個插件和Flask關(guān)系,但是當(dāng)需要真正使用的時候,查文檔還是需要在不同的Chrome Tab里面切換),而且社區(qū)插件的質(zhì)量、支持和活躍度也需要話很大的力氣去確認(rèn)。Flask這個項目毫無疑問是優(yōu)秀的:完善的官方文檔,詳細(xì)的教程()還有一個牛X的作者作為光環(huán)加持(這里可以看到作者有不少應(yīng)用廣泛的項目)。但是和Django完全不在一個應(yīng)用層面,我會在下一段作出比較和說明。而且Flask這個項目基本已經(jīng)處于沉睡期,最新的版本0.10.1是2013年發(fā)布的,項目的代碼倉庫也是比較低的活躍度(大概是一個月10次左右的Commit和PR),1.0的發(fā)布從2014年到2016年一直說要發(fā)布,一直沒有出來。各個插件更新也是停留在2015年中。和Django比較活躍度確實令人捉急。Flask和Django的應(yīng)用場景鑒于Flask和Django的特點,如果你是開發(fā)一個REST API的系統(tǒng),沒有復(fù)雜的分層和邏輯的話,F(xiàn)lask會是一個不錯的選擇,因為框架內(nèi)建的功能已經(jīng)足夠你完成這個任務(wù);又或者,你是打算實現(xiàn)一個大型的系統(tǒng),需要自己重新實現(xiàn)大部分插件的內(nèi)容,F(xiàn)lask也還是不錯,因為它足夠的簡單,能讓你快速的讀懂和擴(kuò)展。其他的情況我還是推薦你用回Django。尤其是當(dāng)你需要安裝大量的Flask插件,去實現(xiàn)Django本來就有的功能時,你就應(yīng)該意識到你需要放棄Flask。當(dāng)然這只是個人的看法,也沒有絕對這一說,主要還是看你想在框架上花費多少的時間。
市面上公司用django作為Python Web 開發(fā)框架相對多點,原因是功能比flask全面,官方支持強大,參考資料詳細(xì),從而易上手,維護(hù)成本低。
個人以前做Python web開發(fā),給公司做業(yè)務(wù)系統(tǒng)也是選django,flask只是私下做自己的小項目用,主要還是考慮到人手少,造輪子速度跟不上開發(fā)進(jìn)度,擔(dān)不起系統(tǒng)上線推遲的風(fēng)險,雖然造輪子更有成就感。
django和flask各有千秋,必須結(jié)合公司情況去選定使用哪個。但是作為開發(fā)人員兩種框架都應(yīng)該掌握i熟悉的
3
回答1
回答7
回答3
回答4
回答2
回答10
回答0
回答10
回答3
回答