當前位置:
首頁 > 知識 > Python Web 框架介紹

Python Web 框架介紹

(點擊

上方藍字

,快速關注我們)




編譯:開源中國 



www.oschina.net/translate/an-introduction-to-python-frameworks


如有好文章投稿,請點擊 → 這裡了解詳情




今天,有非常多的Python框架,用來幫助你更輕鬆的創建web應用。這些框架把相應的模塊組織起來,使得構建應用的時候可以更快捷,也不用去關注一些細節(例如socket和協議),所以需要的都在框架里了。接下來我們會介紹不同的選項。



Python發源於八十年代後期。開發者是Centrum Wiskunde & Informatica的Guido van Rossum,這是位於荷蘭阿姆斯特丹科學園區的一個數學和計算機科學研究中心。之後Van Rossum一直是Python開發很有影響的人物。事實上,社區成員給了他一個榮譽稱號:終生仁慈獨裁者(BDFL)。




經過初期的不起眼,Python已經成為互聯網最流行的服務端編程語言之一。根據W3Techs的統計,它被用於很多的大流量的站點,超過了ColdFusion, PHP, 和ASP.NET。其中超過98%的站點運行的是Python 2.0,只有1%多一點的站點運行3.0。




框架讓開發更輕鬆




今天,有著大量的Python框架,它們可以讓web應用的開發更輕鬆。這些框架把不同的模塊集成在一起,讓你更快的構架程序,而不用關注一些細節(例如socket和協議),框架提供了需要的所有功能。




作為分成兩部分的系列文章的第一部分,我們會介紹一些最流行的Python框架。雖然大部分現代的web框架都運行在服務端,也有一些框架開始嘗試與客戶端代碼結合,可以在客戶端運行(例如Skulpt和Trinket)。Python框架通常分為全棧框架和非全棧框架。全棧框架設計從用戶體驗到資料庫的所有技術,非全棧框架則並不包含整個開發的全部技術。



此外還有一種微框架,也屬於非全棧框架,但是更輕量級。有的情況下,微框架是比較適合的,有時又適合使用全棧框架。在文章的第二部分我們會對全棧框架和微框架做一個比較。




Django




Django恐怕是最有代表性的Python框架了。它是一個遵循MMVC架構模式的開源框架。它的名字來自Django Reinhardt,一個法國作曲家和吉他演奏家,很多人認為他是歷史上最偉大的吉他演奏家。位於堪薩斯洲的Lawrence城的Lawrence Journal-World報社有兩位程序員,Adrian Holovaty和Simon Willison,他們在2003的時候開發出了Django,用於給報紙開發web程序。




Django內置了模板引擎,同時也通過OOTB來支持流行的Jinja2引擎。它還支持基於正則的URL分發,可以通過簡單的URL來完成複雜的映射。



Django的優勢之一是只需要單獨的安裝包來安裝。其他的一些類似的框架需要下載很多組件才能開始工作。而且,Django還有完善的保持更新的文檔,對於開源項目來說這通常是短板。它是一個健壯的框架,很好的集成了很多來自社區的插件和擴展。項目背後的社區看上去也組織的很好,這從它非常完善的文檔和教程就可以看出來。




TurboGears




TurboGears是在幾個著名的Python項目上構建起來的一個框架,如SQLAlchemy,WebOb,Repoze,Genshi。在某種意義上,TurboGears是將多個已經建立的開放平台粘合在一起。和Django一樣,它採用MVC架構。它最近還包含一個「最小模式」,使其可以作為一個微框架。




TurboGears是由Kevin Dangoor在2005年開發的。他在當年9月將其作為一個開源項目發布。2013年,項目開發人員遷移到支持Python 3,拋棄了他們曾經寫的Pylons代碼。TurboGears的優點包括:






  • 支持聚合



  • 強大的對象關係映射器



  • 事務系統支持多資料庫間事務



  • 多資料庫支持



  • 以可重用的代碼片段為模板



  • 具有很多的靈活性,可以對接非標準組件



  • 支持分片



  • 模板系統使設計師的設計更輕鬆




TurboGears的一些缺點包括管理功能較為基礎,較少的第三方應用程序以及只有初級的文檔。TurboGears的一個重大挑戰是它的壓倒性。因為它混搭的其他組件都提供無限的靈活性, 當試圖決定何種路徑來完成一個任務時它是過於複雜的。



web2py




web2py是一個開源框架,允許開發者快速創建動態互動式的網站。它的設計目標是消除拖慢開發的大量重複編程任務,比如創建基本的表格。它在最初是作為工具開發的。隨後被Django和Ruby on Rails模仿,Ruby on Rails是個Ruby的框架。同TurboGears一樣,它使用MVC架構。




最開始的源代碼是由Massimo DiPierro在2007年開放的。在那時,它被稱為Enterprise Web Framework(EWF)。由於命名衝突,它改過好幾次名字,最後在1.16版確定為當前的web2py。使用web2py開發的應用包括Movuca內容管理系統,音樂網站NoobMusic,名為LinkFindr的網路診斷工具,以及Instant Press博客平台。在2011年,web2py被評為最好的開源開發軟體,榮獲Bossie Award。第二年,又斬獲InfoWorld的年度技術獎。




與Django一樣,web2py也具有廣泛的文檔。新開發者和高級開發者可以免費下載它的完整開發手冊。




web2py的一些優點包括:





  • 容易使用——作為一個魯棒的全棧式框架,它無需其他依賴就可以工作,容易學習和部署,安裝也無需任何配置文件,一旦下載完成,安裝完畢,就可以用了。開發者會獲得一個資料庫,一個基於web的IDE,web伺服器以及一個有多個核心對象組成的強大API。



  • 安全性出色——Web2py的模板語言減少了黑客使用跨站腳本的危險,抽象層在創建表單時有表單域有效性檢查,避免SQL注入,也阻止了跨站請求偽造攻擊(csrf攻擊)。會話被存儲在伺服器上,阻止壞的執行者把瀏覽器cookie弄亂,並且每個密碼都是哈希後存儲的。




web2py的一些缺點包括:






  • 在常規基礎上使用管理的介面不太容易



  • 管理的介面沒有許可權



  • 沒有內建的單元測試支持



  • 開發速度迅速,所有的函數都有預設行為,表單時自動生成的,高層次的小部件和應用網格都是內建的。




Flask




Flask是一個基於Jinja2和Werkzeug的python微框架,和其他框架類似,它是BSD授權的,一個有少量限制的免費軟體許可。使用Flask的網站包括領英LinkedIN和Pinterest。Flask有以下特點:






  • 內建的單元測試支持



  • 模板使用Jinjia2



  • 大量文檔



  • 客戶端會話使用安全cookies



  • 開發伺服器和調試器



  • Restful請求



  • 與WSGI 1.0兼容



  • 基於unicode



  • 大量的擴展Flask是一個年輕的框架,2010年誕生,Flask的目標是不給程序員強加限制,允許你使用自己的資料庫對象關係映射,模板引擎,會話中間件以及你的項目所需的其他組件,在我看來這就是這個微框架的用意。我想說像Flask這樣的框架更適合有經驗的開發者,並不是小規模應用程序所必須的,當然,如果你只想做一個簡單的REST API,那麼Flask當然再好不過了。




Bottle




瓶(Bottle)和flask一樣,Bottle是一個伺服器網關介面(WSGI)網路框架。作為一個文件,它不依賴於Python標準庫外的任何庫。Marcel Hellkamp於2009年寫它的時候,它僅由包含模板、路由和一個WSGI抽象層的最小工具開始。對於程序員尋找靈活性和基本功能、構建簡單的應用程序和網站、創建一個Web API來說,這小並且強大的框架是極好的。




它的優點包括:






  •  內建的快速模板引擎和對Jinja2,Mako和Cheetah的支持



  •  可以訪問上傳,cookies,表單數據,標題,和其他元數據的大量工具



  •  支持fapws3,Google App Engine,CherryPyPaste的內建HTTP開發伺服器



  •  支持動態URLs




Bottle的另一個優點是,它的小巧精幹便於嵌入在一個較大應用程序中而不必擔心系統依賴關係。如果你想用一個簡單的,乾淨的和快速的框架並且它沒有過多冗餘,來創建小的應用程序,Bottle是適合你的。




多框架




雖然很難相信,但這些只是少數幾十個開發人員可以使用Python框架,。Python.org報道,Django,TurboGears和web2py是最受歡迎的完整選項。為了在框架優化方面提供一個全面的觀察,這裡我們添加了兩個高級形態的微型框架。有著熱情的追隨者其他框架包括 Pyramid, web.py, Bobo, Albatross, 和 CherryPy。




找到正確的適合選擇




正確框架的選擇取決於項目的規模,它的通信需求,它是否是一個獨立的應用程序,定製需求的級別,開銷,和許多其他因素。同樣重要的是,它取決於哪個框架適合你個人的工作方式。回顧這些項目並下載他們最新的版本。在計劃一個主要旅行之前,試開一下確保你在一個合適的車輛中。




看完本文有收穫?請轉

發分享給更多人


關注「P

ython開發者」,提升Python技能


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

Python 多線程雞年不雞肋
其他語言無法比擬的6個Python特性
Python中 else 塊那點事

TAG:Python |

您可能感興趣

Python Web 應用程序 Tornado 框架簡介
Python爬蟲框架之pyspider
Spring Cache 框架
基於Asyncio的Python微框架:Quart
JFinal框架學習——EhCachePlugin
類Keras的PyTorch 深度學習框架——PyToune
RPC框架實踐之:Apache Thrift
淺談Metasploit框架中的Payload
python:web框架Falsk知識點總結
RecQ-Python推薦系統框架
LinkedIn 開源 TonY:在 Hadoop 上運行 TensorFlow 的框架
LinkedIn開源TonY:在Hadoop上運行TensorFlow的框架
Jmeter+Ant+Jenkins介面自動化測試框架搭建for Windows
AI 框架使用排行:TensorFlow、Scikit Learn、IBM Watson、Spark-MLib、Keras
django框架:HttpResponse對象
圍觀丨Google 的 Mobile UI 框架 Flutter Preview 1 發布!
Wasserstein is all you need:構建無監督表示的統一框架
微軟開源 Windows UX 框架:WPF、WinUI、Windows Forms
原創:用python web框架 bottle 開發網站一
AspectJ 框架 spring 實現 AOP?