前兩天有小夥伴給我留言說:什麼時候能出個Python框架的干貨總結(本文列舉只是一部分,並不包含所有Python框架),於是乎今天這篇文章孕育而生。 (突然覺得自己很nice)
推薦一:Django(推薦學習:Python影片教學)
Django應該是最出名的Python框架,GAE甚至Erlang都有框架受它影響。 Django是走大而全的方向,它最出名的是其全自動化的管理後台:只需要使用起ORM,做簡單的物件定義,它就能自動產生資料庫結構、以及全功能的管理後台。
優點:
開源框架,有完美的文件支援
解決方案眾多,內部功能支援較多
優雅的URL,完整的路由系統
自助式的後台管理
缺點:
系統緊密耦合,想用喜歡的第三方函式庫來取代是非常難的,即使打了一些補丁用上了也會覺得非常彆扭。
Django自帶的ORM遠不如SQLAlchemy強大。
Template功能比較弱,不能插入Python程式碼,要寫複雜一點的邏輯需要另外用Python實作 Tag或Filter。
推薦二:Flask
Flask是一個用Python寫的輕量級Web應用框架。基於Werkzeug WSGI工具箱和Jinja2範本引擎。 Flask也被稱為“microframework”,因為它使用簡單的核心,並用extension增加其他功能。 Flask沒有預設使用的數 據函式庫、窗體驗證工具。
優點:
Flask比Django更靈活,在用Flask來建立應用之前,選擇元件的時候會給開發者帶來更多的靈活性,可能有的應用場景不適合使用一個標準的ORM(Object-Relational Mapping物件關聯映射),或需要與不同的工作流程和範本系統互動。
缺點:
Flask只是一個內核,預設依賴兩個外部庫: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以擴展的形式進行嵌入使用。
建議三:Scrapy
Scrapy是Python開發的一個快速、高層次的螢幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的資料。 Scrapy用途廣泛,可用於資料探勘、監測和自動化測試。
優點:
Scrapy是一個非常強大的爬蟲框架,它不僅能便捷地建立request,還有強大的selector能夠方便地解析response,然而它最受歡迎的還是它的效能,既抓取和解析的速度,它的downloader是多執行緒的,request是非同步調度和處理的。這兩點使它的爬取速度非常之快。
另外還有內建的logging,exception,shell等模組,為爬取工作帶來了許多便利。
缺點:
scrapy是封裝起來的框架,他包含了下載器,解析器,日誌及異常處理,基於多線程, twisted的方式處理,對於固定單個網站的爬取開發,有優勢,但是對於多網站爬取100個網站,並發及分散式處理方面,不夠靈活,不便調整與括展。
推薦四:Tornado
Tornado是一種 Web 伺服器軟體的開源版本。 Tornado 和現在的主流 Web 伺服器框架(包括大多數 Python 的框架)有著明顯的區別:它是非阻塞式伺服器,而且速度相當快。
優點:
Tornado擅長為需要嚴密控制非同步網路細節的應用程式提供基礎架構。例如,Tornado不僅提供內建的非同步HTTP伺服器,還提供非同步HTTP客戶端。因此,Tornado非常適合建立應用程序,例如Web scraper或bot,它們會並行查詢其他網站並對傳回的資料進行操作。
缺點:
模板和資料庫部分有很多第三方的模組可供選擇,這不利於封裝為一個功能模組。
推薦五:Web2py
web2py是一個為Python語言提供的全功能Web應用框架,旨在敏捷快速的開發Web應用,具有快速、安全以及可移植的資料庫驅動的應用,相容於Google App Engine。
優點:
Web2py最大的吸引力在於其內建的開發環境。當設定Web2py實例時,將獲得一個Web介面,實際上是一個線上Python應用程式編輯器,可以在其中配置應用程式的元件。這通常意味著創建模型,視圖和控制器,每個都透過Python模組或HTML模板進行描述。
缺點:
Web2py的一個重要限制是它僅與Python 2.x相容。首先這意味著Web2py無法使用Python 3的非同步語法。如果你依賴Python3獨有的外部函式庫,那你就不走運了。但是,正在進行使Web2py Python3相容的工作,並且在撰寫本文時它已接近完成。
推薦六:Weppy
Weppy感覺就像Flask的簡約風格和Django的完整性之間的中間標記。雖然開發Weppy應用程式具有Flash的直接性,但Weppy具有Django中的許多功能,如資料層和身份驗證。因此,Weppy適用於從極其簡單到適度複雜的應用程式。
優點:
Weppy的文件與框架本身有相同的風格。它乾淨,可讀,並且被人類消費。除了通常的“hello world”應用程式範例之外,它還包含一個很好的演練教程,可以讓你創建一個微博系統作為初學者專案。
缺點:
雖然Weppy有一個擴充機制,但官方批准的附加元件清單很小,遠小於Flask的擴充目錄。
推薦七:Bottle
Bottle可以被認為是一種迷你燒瓶,因為它比其他「微框架」更緊湊和簡潔。由於其占地面積最小,Bottle非常適合包含在其他專案中或快速交付REST API等小型專案。
優點:
Bottle不需要像其他框架那麼多的文檔,但文檔絕不吝嗇。所有關鍵的東西都適合單一(儘管很長)的網頁。除此之外,還可以找到每個API的完整文檔,如何在各種基礎架構上進行部署的範例,內建模板語言的解釋以及一系列常見配方。
缺點:
Bottle極簡主義的一個後果是有些功能根本就不存在。不支援表單驗證,包括CSRF保護等功能。如果要建立支援高度用戶互動的Web應用程序,則需要自行添加它們。
更多Python相關技術文章,請造訪Python教學欄位學習!
以上是python都有哪些框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!