知識
不管是網站,軟件還是小程序,都要直接或間接能為您產生價值,我們在追求其視覺表現(xiàn)的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站成為營銷工具,讓軟件能切實提升企業(yè)內部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!
2020年值得去了解的12個Python Web框架
發(fā)表時間:2020-1-15
發(fā)布人:葵宇科技
瀏覽次數(shù):90
在Web開發(fā)領域,Python其實并沒有像在機器學習和數(shù)據(jù)處理這個領域一樣占有統(tǒng)治地位。不過鑒于Python在最近幾年的強勢地位,了解一下Python的web框架也挺有必要的。萬一哪天我自己或者是客戶“腦抽”了,真的要用Python來寫web應用了呢?框架(Framework)讓程序員的生活更容易,常用的功能和方法都打包進了框架里,直接從庫里拿出來修改一下就用,確實是個省時省力,干活多快好省的好東西。
1. Why Python?
就不廢話了,用一張圖片和一張圖表來解釋吧。
- 人生苦短,Python是岸
- 日月蛇(Python)教,一統(tǒng)江湖之勢

2. Python Web框架總結
總體來說Django和Flask是最最流行的Python Web框架,但是這不是說我們就可以忽略其他的框架。其實每一個框架都有其獨特的設計和優(yōu)勢,在某些需求下,可能會更適合你的項目。

我們可以把這些框架分成兩種類型: 1.全功能框架(或重型框架),這種類型的框架包括創(chuàng)建web應用所需要的大部分功能,通??梢杂糜跇嫾苄枰暾δ芎蛷碗s設計的大型網站應用。2.輕量級框架,顧名思義,就是提供比較簡單的網站構建功能,通常用于簡單的,或者是小型的網站應用。
全功能框架
Django
官網 | GitHub | PyPI | Awesome
Django應該是最流行的Python Web框架了,沒有之一。而且其包含了創(chuàng)建應用需要的幾乎全部功能,給人的感覺是這個框架希望框架本身實現(xiàn)各種功能,而不是依靠其他的庫來完成。比如Django集成了安全認證,URL Routing,模板引擎,ORM以及數(shù)據(jù)庫Scheme映射。這使得Django非常強大,有很好的可擴展性,性能也非常好。Django支持 PostgreSQL, MySQL, SQLite, Oracle和其他第三方數(shù)據(jù)庫。其ORM功能支持多數(shù)據(jù)庫之間的轉換。
總之Django的設計優(yōu)秀,結構合理,性能出眾。適合不同規(guī)模的網站,在2020年,Django會加入對機器學習的支持,同時攜Python迅猛發(fā)展勢頭,很有可能會成為今年使用者增長最快的Web框架。
Pyramid
官網 | GitHub | PyPI | Awesome
Pyramid是一個在2010年就誕生的框架,其目標是簡化web開發(fā)的復雜性。最新的版本是1.10,這已經是其第10個正式版本了。這個框架可以用于復雜的應用開發(fā),也適用輕量級應用。Pyraid的開發(fā)社區(qū)還是比較活躍的。版本更新頻繁,各技術群的討論也是非常熱烈的。
TurboGears
官網 | GitHub | PyPI
TurboGear是一個開源和數(shù)據(jù)驅動的程序框架,它是建構在很多不同的中間件和庫的基礎上,實際上這個框架試圖把其他的Python框架中最好的組件融入其中。TurboGear允許開發(fā)者能夠快速搭建數(shù)據(jù)驅動的網站應用。它有非常好用的模板引擎,對聚合的支持,功能強大而靈活的ORM工具,而且自帶了大量的小代碼片段,可以讓開發(fā)更容易。
現(xiàn)在TurboGear的社區(qū)正在致力于開發(fā)一個簡化(瘦身)版的TurboGear框架,這將會給大家?guī)硪粋€更加簡單易用的框架。
Web2py
官網 | GitHub | PyPI
這個原先是作為一個教學用的項目被開發(fā)出來,自帶IDE工具,為了簡化使用,其沒有項目級的配置文件。Web2Py有一個內置的ticket系統(tǒng),只要出現(xiàn)錯誤就會生出ticket,用來追蹤運行時的問題。
這個項目的社區(qū)和郵件列表并不活躍
輕量級框架
Flask
官網 | GitHub | PyPI | Awesome
目前為止,Flask是最流行的Python輕量級Web框架。這個框架是受到Sinatra Ruby的啟發(fā)而開發(fā)出來的。 Flask基于Werkzeug WSGI toolkit以及 Jinja2 模板。
Flask的目的是要建立一個非常穩(wěn)定和可靠的Web應用的基礎系統(tǒng),我們可以使用Flack再加上各種插件,擴展和其他模塊,能夠構建功能強大的網站和應用。事實上,如果Django不適合的應用類型,使用Flask基本上是Python Web開發(fā)的默認選擇。
Flask也是一個在2010年啟動的開源項目,到目前為止已經更新了27個版本,由于歷史比較長,有些早期的擴展已經不被支持,文檔也不再更新。需要在網絡上找到最新的文檔和功能。
Bottle
官網 | GitHub | PyPI
Bottle是一個輕量級的框架,最初是設計為一個API框架,整個Bottle框架是在一個源文件上。沒有引用任何Python標準庫。建議是如果使用Bottle,最好是非常小的程序,最好小于500行代碼并且沒有特殊的需求。
CherryPy, Falcon, Hug, FastAPI - 極為小眾,就不介紹了。讀者有興趣可以自己查看
異步框架
以下兩個開源框架用于處理高并發(fā)的應用,可以用于需要解決C10K問題(10000+并發(fā)的場景)
Sanic
官網 | GitHub | PyPI
Sanic是基于uvloop開發(fā)的,用于創(chuàng)建高并發(fā)異步Http請求的應用,必須使用Python3.5+,兼容Python3.5+的async/await方法,提供非阻塞的異步訪問功能。Sanic是一個非常流行的異步框架。提供了routing, middleware, cookies, versioning, static files, blueprints, class-based views, 以及sockets的功能。不過比較可惜的是并沒有提供模板引擎,也沒有內置的數(shù)據(jù)庫支持功能。
在一個Benchmark測試中,Sanic單進程和100連接的情況下,最高每秒同時并發(fā)處理33542個請求,平均時延2.96ms。
Tornado
官網 | GitHub | PyPI
Tornado是一個Python web框架加上異步網絡處理庫,用于大流量的網絡應用開發(fā)。使用非阻塞I/O,目標能夠處理C10K網站。如果配置合理,Tornado框架的網站應用能夠輕松應對10000+并發(fā)的流量。
Tornado的流行程度介于Django和Flask之間,如果你需要一個web應用,同時也要支持高并發(fā),那Tornado是最好的選擇