因爲最近開始了一個新的項目cfBlog2,開始對python的web框架進行了一些研究。
所以將一些研究的心得寫在這裏,供之後有須要的朋友參考。python
Python在國內應該是除了PHP之外最流行的開發語言了(在國外的或許ROR能競爭,但在國內估計用的人沒多少)。在PHP的世界裏面,有一堆開發框架,有國產的ThinkPHP、YII、CI,稍微新一點的Larvel5,每一個都有很多的用戶並且項目的活躍度都不錯。相對來講Python就會略微遜色,名義上是有Django、Flask、Bottle、Pyramid、Web2Py等,但實際真正活躍的卻很少。陣營來講劃分仍是比較明確:以Django爲首的重量級框架和以Bottle、Flask爲首的輕量級框架,所以在這裏我選擇兩個社區相對活躍的兩個典型做爲比較。web
Django是基於中間件的一個大型框架。框架自己的內容至關豐富,基礎部分:模版引擎、ORM、表單、路由分發這些標配,還有很多的中間件:登錄、後臺管理,這些仍是官方中間件,另外還有很多的第三方中間件。關於第三方的我沒有詳細研究過,質量不太好評論。還有由ROR帶起的基於命令的Web開發方式和擴展、還有內建的數據庫遷移,基本上你呢想到的Django都有。能夠說Django和Python至關匹配,前者是Web開發的萬金油,後者是開發領域的萬金油。
另外Django這個框架自己還有一個專門的基金會,這個基金會是由Django的母公司成立的,估計有很多用這個框架的公司也對期捐助過。框架自己至關活躍,每隔大概8個月就有一個大版本。
社區也是至關活躍,官方的Community、非官方(StackOverflow)和IRC(聽說IRC是比任何一個開源項目都要活躍)基本上你碰到的問題你們都會有解決或者Workout方案。數據庫
FLASK框架自己只包含路由分發,請求和響應的封裝和插件系統,在加上做者本身的Werkzeug(處理WSGI)、jinja2(模板引擎)和Flask-SQLAlchemy擴展(Model層),這幾個同一個做者的項目構成一個完整的MVC框架。
對於Flask自己,一個微框架,這已經足夠了,並且它也只能提供這麼多。
若是你須要表單處理,請安裝Flask-WTF;若是你須要基於命令的開發模式,請安裝Flask-Script和Flask-CLI(這是一個Flask1.0的backport模塊);若是你要登錄驗證,請裝Flask-Login;若是你要後臺管理,請裝Flask-Admin。什麼?!你所有都要?請裝Django。
對Flask就是這麼一個框架。這是一個典型的社區項目,做者在實現了一個牛X的核心之後,就撒手交給社區。各個插件的文檔分散(雖然Flask曾經出了一本書,試圖打通各個插件和Flask關係,可是當須要真正使用的時候,查文檔仍是須要在不一樣的Chrome Tab裏面切換),並且社區插件的質量、支持和活躍度也須要話很大的力氣去確認。
Flask這個項目毫無疑問是優秀的:完善的官方文檔,詳細的教程(
鑑於Flask和Django的特色,若是你是開發一個REST API的系統,沒有複雜的分層和邏輯的話,Flask會是一個不錯的選擇,由於框架內建的功能已經足夠你完成這個任務;又或者,你是打算實現一個大型的系統,須要本身從新實現大部分插件的內容,Flask也仍是不錯,由於它足夠的簡單,能讓你快速的讀懂和擴展。
其餘的狀況我仍是推薦你用回Django。尤爲是當你須要安裝大量的Flask插件,去實現Django原本就有的功能時,你就應該意識到你須要放棄Flask。
固然這只是我的的見解,也沒有絕對這一說,主要仍是看你想在框架上花費多少的時間。flask