前言
目前隨著 Python 在大數(shù)據(jù)、云計算、人工智能方面的熱度,Python Web 應(yīng)該也會被更多企業(yè)了解使用。
Python Web 框架千萬種,沒必要都去了解和學習,身邊總有人說高手都用 Flask 或者 Tornado。其實
這個東西仁者見仁智者見智,沒有必要褒貶,在我看來 Flask 就像是 Android 系統(tǒng)靈活、擴展性強,
Django,像是 IOS 系統(tǒng)整體生態(tài)相對封閉。雖然框架沒有高低之分,但是他們都有各自專注的應(yīng)用場景,
經(jīng)常聽身邊的人說 Tornado 性能多么多么的高,但是我一點都不感冒,也不了解所以就不說它了,
接下來我想說說我用過和了解過的: Flask、Django、Pyramid
對于 Pyramid 可能有些人不大了解,先百科一下 Pyramid
Pyramid:Pyramid 也是站在巨人肩膀上的框架,借鑒于 Zope、Pylons 1.0、Django
第一個 Pyramid 版本名為 repoze.bfg 創(chuàng)建于 2008 年。2010 年末,更名為 Pyramid 并于同年11月份合
并到 Pylons 項目中。
簡介
Flask 屬于微框架,專注輕快,主要面向需求簡單的小應(yīng)用。Pyramid 和 Django 都是面向大的應(yīng)用,但是
在擴展性和靈活性上走了不同的路。Pyramid 注重靈活性,畢竟是站在巨人肩膀上的框架,吸取了其它框架
優(yōu)點的,讓開發(fā)者選擇合適的工具來開發(fā)項目。這意味著開發(fā)者可以選擇數(shù)據(jù)庫,URL結(jié)構(gòu),模板風格等等。
Django的目標是提供 Web 應(yīng)用開發(fā)的一站式解決方案,所以相應(yīng)的模塊有很多。Django 包含了一個 ORM 模塊,
而 Pyramid 和 Flask 是讓開發(fā)者來選擇如何存儲數(shù)據(jù)。針對非 Django 框架的最流行的ORM目前是SQLAlchemy,
也有很多其他的選擇,比如 DynamoDB 和 MongoDB,不過還有 LevelDB 和 SQLite 這樣的簡單本地持久化。
Pyramid 可以使用任何持久層,甚至是還沒做好的。
我的學習原則是:學習與需求匹配,一般有兩種方式
學習一個東西之前評估學習它的價值,
有需求現(xiàn)學現(xiàn)用
雖然這種獲取知識的方式,很有局限性,但是我又是很懶的一個人,不愿意看不到價值地去學習一些東西。
在學習 Python 之前對一些 Web 框架做了一些了解,在 Github 上看到了一個 Flask、Pyramid、Django 框架
實戰(zhàn)的對比 Demo,如果你是和我一樣不喜歡理論,只追求實戰(zhàn)的可以移步 Github
關(guān)于框架
Django 的一站式解決思路讓開發(fā)者不用在開發(fā)之前不用在項目構(gòu)建上花費大量的實踐。Django 有模板,
表單,路由,認證,基本的數(shù)據(jù)庫管理等等內(nèi)建功能。Pyramid 雖然包含路由和驗證,但是模板和數(shù)據(jù)庫
管理需要第三方庫。用 Flask 和 Pyramid 來構(gòu)建應(yīng)用之前,選擇組件的時靈活性更大。可能有的應(yīng)用場景
不適合使用一個標準的ORM,或者需要與不同的工作流和模板系統(tǒng)交互。
Flask,是這三個框架中最年輕的,創(chuàng)始于2010年。Pyramid 框架來源于 Pylons 項目,在2010年末更名為Pyramid,
它最早發(fā)布與2005年。Django發(fā)布于2006年,就在Pylons項目之后。Pyramid 和 Django 是非常成熟的框架,積累了
大量的插件和擴展來滿足不同需要。盡管 Flask 的歷史較短,但它能夠從以前的框架學到一些東西并且將它的目標
設(shè)定在了小型項目上。它在一些僅有一兩個功能的小型項目上得到了大量應(yīng)用。
社區(qū)活躍度
在 StackOverflow 上Django的相關(guān)問題遠遠甩開 Flask、Pyramid 幾條街,不過 Django 和 Flask 的 Stars 量比較接近
總結(jié)
Pyramid 在這三個框架里是最靈活的。它可以用來寫小的應(yīng)用,它也能來支持像Dropbox這樣大名鼎鼎的網(wǎng)站。
像Fedora這樣的開源社區(qū)選擇它來做一些應(yīng)用, 比如他們的社區(qū)badges_system,它會獲取關(guān)于很多項目工具的
事件來給用戶頒發(fā)成就獎。對 Pyramid 最多的抱怨是它有如此多的選擇,在開始新項目的時候可能會有點糾結(jié)。
目前最流行的框架是Django,有一堆網(wǎng)站用它。有Bitbucket、Pinterest、Instagram、The Onion來完成網(wǎng)站
功能的全部或一部分。對于一些有普遍需求的網(wǎng)站,選Django是非常理智的,因為它對于中到大型的web應(yīng)用
是個非常流行的選擇。
Flask適合開發(fā)者用最快的速度做一個簡單的,Python做后端的網(wǎng)站。它適合一些一次性的工具,或者一些基于
現(xiàn)有API的簡單web應(yīng)用。需要一個簡單的web接口的后端項目可以開發(fā)的很快,一些需要少量配置的應(yīng)用可以在
Flask的前端上受益,比如jitviewer ,它就可以提供web接口來查看 PyPi的即時編譯日志。這三個框架都對一
些需求提供了解決方案,我們可以來看看它們的區(qū)別。有些區(qū)別不僅僅是表面的,它會影響你如何設(shè)計產(chǎn),多快
能實現(xiàn)特性并且修復問題。因為我們的例子都很小,我們可以看到在小規(guī)模項目的時候,F(xiàn)lask非常棒,而Django
就有點笨重了。Pyramid 的靈活性沒有成為一個要素,因為我們的需求是一樣的,但是現(xiàn)實中的需求都是非常隨機的。
【推薦閱讀】