內容源于網路,著作權歸原作者所有

學習任何一門開發語言都離不開框架,一個框架就好比是一個毛坯房,只需要我們裝修就可以入住,如果沒有框架我們就只能一磚一瓦的去蓋樓房了,框架的種類很多,具體選擇要根據實際的業務情況,下面就簡單的介紹一下Python七款開源框架的優劣,
Django
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應用程式,則需要自己添加它們,
(完)
看完本文有識訓?請轉發分享給更多人
關注「IT入門」,做全堆疊開發工程師
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/263318.html
標籤:其他
