網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
python3框架
python哪幾種開源框架成為大主流【菜鳥必看】 企業(yè)視頻課程
使用Python進(jìn)行Web應(yīng)用程序開發(fā)的框架學(xué)習(xí)階段。目前Python的網(wǎng)絡(luò)編程框架已經(jīng)多達(dá)幾十個,逐個學(xué)習(xí)它們顯然不現(xiàn)實。今天就給大家介紹幾個主流Python框架:Django、Tornado、Flask、Twisted。
①Django發(fā)布于2003年是一款用Python語言寫的免費開源的 Python Web應(yīng)用開發(fā)框架,是當(dāng)前Python世界里最負(fù)盛名且最成熟的網(wǎng)絡(luò)框架。最初用來制作在線新聞的Web站點,目前已發(fā)展為應(yīng)用最廣泛的Python網(wǎng)絡(luò)框架。
②Tornado一這里是一款可擴(kuò)展的,非阻塞的Web服務(wù)器,應(yīng)用開發(fā)框架,以及異步聯(lián)網(wǎng)庫,一個強(qiáng)大的、支持協(xié)程、高效并發(fā)且可擴(kuò)展的Web服務(wù)器Tornado的強(qiáng)項在于可以利用它的異步協(xié)程機(jī)制開發(fā)高并發(fā)的服務(wù)器系統(tǒng)。
③Flask是Python Web框架族里比較年輕的一個框架,這使得它吸收了其他框架的優(yōu)點并且把自己的主要領(lǐng)域定義在了微小項目上。
④Twisted是一個有著十多年歷史的開源事件驅(qū)動框架。Twisted不像前3種著眼于網(wǎng)絡(luò)HTTP應(yīng)用開發(fā),而是適用于從傳輸層到自定義應(yīng)用協(xié)議的所有類型的網(wǎng)絡(luò)程序的開發(fā),并能在不同的操作系統(tǒng)上提供很高的運(yùn)行效率。支持許多常見的傳輸及應(yīng)用層協(xié)議,如TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。還支持Unix domain sockets,在MIT許可下應(yīng)用,Twisted附帶了一個可以web服務(wù)器上運(yùn)行的WSGI,它能夠為其他Python web應(yīng)用程序允許開發(fā)人員使用的服務(wù)器定制HTTP服務(wù)。
如果我的分享對你有幫助,請你關(guān)注我頭條號。
13個Python web框架比較 互聯(lián)網(wǎng)視頻課程
Python程序員有很多很好的選擇來創(chuàng)建Web應(yīng)用程序和API;Django,Weppy,Bottle和Flask引領(lǐng)潮流。
如果正在開發(fā)一個Web應(yīng)用程序并且已經(jīng)選擇使用Python作為構(gòu)建它的語言,那么這是一個明智的選擇。Python的開發(fā)成熟度,強(qiáng)大的庫以及廣泛的實際應(yīng)用使其成為Web開發(fā)的必需。
現(xiàn)在是困難的部分:從眾多可用的Python web框架中選擇一個。它們不僅數(shù)量在不斷增長,而且很難找到最適合你的。如果你正在構(gòu)建一個快速而又簡單的REST API,那么你將不需要任何完整的面向用戶的應(yīng)用程序所需的管道和連接,該應(yīng)用程序具有用戶登錄、表單驗證和上傳處理就可以了。
在本文中,我們將研究13種最廣泛部署的Python web框架。我們將關(guān)注每種web應(yīng)用程序最適合構(gòu)建哪種類型的web應(yīng)用程序,并研究它們?nèi)绾卧谝韵铝鶄€方面相互競爭:
安裝:設(shè)置不需要正式的框架項目(它可以簡單地作為包含的模塊放到現(xiàn)有的項目中)、啟動所需的模板文件最少、或者帶有某種預(yù)先配置的設(shè)置,這是多么容易或簡單。
文檔:幾乎每一個像樣的Python項目都有文檔,可以遍歷設(shè)置、演示基本用例并提供關(guān)于API的詳細(xì)信息。在這里,我們給這樣的框架更高的分?jǐn)?shù):這些框架展示了如何在教程中創(chuàng)建整個應(yīng)用程序,包括常見的配方或設(shè)計模式,以及超出職責(zé)范圍(例如提供有關(guān)如何運(yùn)行的詳細(xì)信息) Python變體(如PyPy或IronPython)下的框架。
管理:這是相對得分,表示配置和維護(hù)框架需要做多少工作。默認(rèn)情況下,工作量最小的框架得分更高。
原生能力:包含多少組件?得分較高的是那些為國際化,HTML模板和數(shù)據(jù)訪問層提供原生支持的框架。還有一些框架使用Python最近引入的異步I/O操作的原生支持。
安全性:提供原生安全措施(如跨站點請求偽造(CSRF)保護(hù)和使用加密cookie的會話管理)的框架獲得更高的分?jǐn)?shù)。
可伸縮性:大多數(shù)Python框架可以利用像Gevent或Gunicorn這樣的項目來大規(guī)模運(yùn)行。在這里,我們看一下提升可伸縮性的框架原生特性,如輸出和頁面片段緩存。
如果你對性能基準(zhǔn)感到好奇,請查看TechEmpower正在進(jìn)行的一系列試驗,這些試驗比較了各種任務(wù)中的多個Web框架,并將代碼和方法發(fā)布到GitHub并進(jìn)行不斷的重新評估。并非所有討論中的框架都在那里進(jìn)行了分析,但是可以很好地了解哪種框架在哪種負(fù)載下表現(xiàn)最佳。
我們將分析13個框架。其中五個:CubicWeb,Django,Web2py,Weppy和Zope2,采用“控件”方法,包含你可以想象的Web應(yīng)用程序所需的大多數(shù)功能。其余八個框架: Bottle,CherryPy,F(xiàn)alcon,F(xiàn)lask,Pyramid,Tornado,Web.py和Wheezy.web,提供更簡約的外觀,交易批量和完整性,簡單易用。
讓我們從重量級開始吧。
重量級的Python Web框架
CubicWeb
CubicWeb被稱為“一個支持重用和面向?qū)ο笤O(shè)計的語義Web應(yīng)用程序框架。”這是一個有趣的系統(tǒng),強(qiáng)調(diào)使用抽象和可重用的代碼塊稱為“多維數(shù)據(jù)集”,但對于某些開發(fā)人員來說可能過于抽象或特殊。
多維數(shù)據(jù)集是具有模式(數(shù)據(jù)模型),實體(編程邏輯)和視圖的軟件組件。通過組合多個立方體,每個立方體執(zhí)行自己的任務(wù),可以通過重用自己的代碼和其他代碼來編寫軟件應(yīng)用程序。
CubicWeb的核心是提供每個Web應(yīng)用程序使用的基本搭建材料:用于數(shù)據(jù)連接和存儲的“存儲庫”;用于基本HTTP請求/響應(yīng)和CRUD操作的“Web引擎”;以及用于建模數(shù)據(jù)的模式。所有這些都在Python類定義中描述。要設(shè)置和管理CubicWeb的實例,可以使用類似于Django的命令行工具。
CubicWeb似乎沒有使用Python 3的原生異步功能。包含異步的一種迂回方式是使用cubicweb.pyramid模塊將Pyramid框架用作Web服務(wù)器,并使用異步構(gòu)造在Pyramid上繪制。但是現(xiàn)在看起來更加直截了當(dāng)。
要在CubicWeb應(yīng)用程序中獲取或操作持久數(shù)據(jù),可以使用關(guān)系查詢語言(RQL),它采用模糊的SQL語法,但在W3C的SparQL之后進(jìn)行模式化。CubicWeb的理由再次是抽象:RQL提供了一種高度分離的路徑來相互關(guān)聯(lián)各種數(shù)據(jù)源。但是,隨著它的實現(xiàn),通過手動構(gòu)建查詢作為字符串,它可能會讓習(xí)慣于ORM的開發(fā)人員感到過時。
使用CubicWeb還有其他障礙。首先,設(shè)置可能很麻煩。因為CubicWeb有很多依賴項,所以最好使用pip install來獲取所有依賴項??赡苓€必須在本地環(huán)境中執(zhí)行一定數(shù)量的手動調(diào)整。這與運(yùn)行pip install或?qū)⒖蚣艽a放入另一個項目的子文件夾的其他框架形成鮮明對比,這就是所需要的。
另一個潛在的問題是缺少本機(jī)模板引擎;生成HTML留給開發(fā)人員。可以通過使用像Jinja2這樣的第三方模板系統(tǒng)或選擇為Web UI提供工具的多維數(shù)據(jù)集來克服這個問題,例如Boostrap HTML框架的工具。
CubicWeb的一個長期問題,缺乏Python 3支持,目前已經(jīng)解決。截至2016年6月的版本3.23,CubicWeb支持Python 3,但Twisted等模塊本身并未完全移植。
與Web2py一樣,CubicWeb將其冗長的文檔稱為“書籍”。它需要時間來解釋CubicWeb的不尋常方法,演示如何構(gòu)建一些基本應(yīng)用程序,包括API引用,并且通常不會特定的方式。
Django
自Django首次出現(xiàn)以來已經(jīng)有十年,它已經(jīng)成為Python最廣泛部署的用于創(chuàng)建Web應(yīng)用程序的框架之一。 Django配備了你可能需要的大部分組件,因此它傾向于構(gòu)建大型應(yīng)用程序而不是小型應(yīng)用程序。
經(jīng)過多年在版本1.x后,Django最近在小數(shù)點的左邊創(chuàng)建了一個版本。 Django 2.0中最大的變化是框架現(xiàn)在只適用于Python 3.4及更高版本。理想情況下,你應(yīng)該使用Python 3.x,所以使用Django的1.x分支的唯一原因是你遇到了舊版本的Python。
Django吸引力的一個關(guān)鍵部分是部署速度。因為它包含了開發(fā)普通Web應(yīng)用程序所需的許多部分,所以可以快速行動。路由,URL解析,數(shù)據(jù)庫連接(包括ORM),表單驗證,攻擊保護(hù)和模板都是內(nèi)置的。
將找到最常見的Web應(yīng)用程序方案的構(gòu)建塊。例如,用戶管理可在大多數(shù)網(wǎng)站上找到,因此Django將其作為標(biāo)準(zhǔn)元素提供。Django本身具有這些功能,而不必創(chuàng)建自己的系統(tǒng)來跟蹤用戶帳戶,會話,密碼,登錄/注銷,管理員權(quán)限等。它們可以按原樣使用或擴(kuò)展,以包含最少量工作的新用例。
核心是BSD,一些組件是LGPLv3??赏ㄟ^zope.formlib獲得;單獨安裝但作為項目的一部分支持。通過第三方擴(kuò)展程序提供。
Django具有健全和安全的默認(rèn)設(shè)置,有助于保護(hù)Web應(yīng)用程序免受攻擊。將變量放在頁面模板中時,例如帶有HTML或JavaScript的字符串,除非明確將變量實例指定為安全,否則不會按字面意義呈現(xiàn)內(nèi)容。這本身就減少了許多常見的跨站腳本問題。如果要執(zhí)行表單驗證,可以使用從簡單的CSRF保護(hù)到返回詳細(xì)錯誤反饋的完整逐個字段驗證機(jī)制的所有內(nèi)容。
如果沒有強(qiáng)大的文檔可以使用像Django那樣豐富和廣泛的功能。Django的文檔站點從多個角度深入研究框架的各個方面。使用Python 3或其他語言,正確的安全性,實現(xiàn)常見的Web應(yīng)用程序組件(如會話或分頁),生成站點地圖,它們都被覆蓋。還詳細(xì)描述了應(yīng)用程序模型,視圖和模板的每個層的API。
然而,強(qiáng)大的力量帶來了極大的復(fù)雜性。Django應(yīng)用程序以其頭重腳輕而聞名,具有許多移動部件。即使只有幾條路線的簡單Django應(yīng)用程序也需要相當(dāng)多的配置才能運(yùn)行。如果你的工作只是設(shè)置幾個簡單的REST端點,Django幾乎肯定是矯枉過正的。
Django也有它的怪癖。例如,頁面模板不能使用callables。示例:可以將{{user.name}}作為模板中的組件傳遞,但不能傳遞{{user.get_name()}}。這是Django確保模板不會無意中做出令人討厭的事情的方法之一,但如果你沒有為它們做好準(zhǔn)備,這些限制可能會很刺激。雖然有解決方法,但它們往往會對性能產(chǎn)生影響。
Django的核心是同步。但是,添加異步行為的一種方法是通過Django Channels項目。這個項目是官方的Django附加組件,它為Django添加了對連接和套接字的異步處理,同時保留了Django的編程習(xí)慣用法。
web2py
在Ruby世界中,Ruby on Rails是事實上的Web框架。DePaul大學(xué)計算機(jī)科學(xué)教授Massimo Di Pierro受到Rails的啟發(fā),用Python創(chuàng)建一個易于設(shè)置和使用的Web框架。結(jié)果是Web2py。
Web2py最大的吸引力在于其內(nèi)置的開發(fā)環(huán)境。當(dāng)設(shè)置Web2py實例時,將獲得一個Web界面,實際上是一個在線Python應(yīng)用程序編輯器,可以在其中配置應(yīng)用程序的組件。這通常意味著創(chuàng)建模型,視圖和控制器,每個都通過Python模塊或HTML模板進(jìn)行描述。一些示例應(yīng)用程序隨附Web2py??梢詫⑺鼈兎珠_來查看它們的工作方式,或?qū)⑺鼈冇米鲉悠髂0鍋韯?chuàng)建自己的應(yīng)用程序。
開發(fā)人員通常只需下載源代碼并使用它來部署Web2py。但對于Windows或MacOS上技術(shù)含量較低的用戶,Web2py的創(chuàng)建者提供的版本基本上是獨立服務(wù)器。下載,解壓縮并運(yùn)行其中一個版本,將擁有一個內(nèi)置Web2py預(yù)配置副本的本地Web服務(wù)器。這是一個很好的方法來創(chuàng)建一個Web2py應(yīng)用程序,然后可以部署其他地方。
Web2py的Web界面是使用Bootstrap 2.16.1構(gòu)建的,因此它易于操作并且易于導(dǎo)航。瀏覽器內(nèi)編輯器不能替代完整的IDE,但它配備了有用的輔助工具,如行編號和Python語法高亮(包括自動縮進(jìn))。還包括一個Python shell的快速Web界面,因此如果需要,可以從命令行與Web2py交互,這對專家來說是一個很好的讓步。
Web2py中使用的數(shù)據(jù)抽象系統(tǒng)與Django的ORM和受其啟發(fā)的其他ORM(例如Peewee)略有不同。這些系統(tǒng)使用Python類來定義模型,在Web2py中,使用構(gòu)造函數(shù)(如define_table)來實例化模型。這些差異中的大部分可能只會對那些已經(jīng)有過經(jīng)驗并且開始使用另一個的人產(chǎn)生震動;他們對新人來說同樣復(fù)雜。將Web2py連接到數(shù)據(jù)提供者可能不會遇到任何麻煩,因為它幾乎涉及現(xiàn)有的每個主要數(shù)據(jù)庫。
一個真正有用的數(shù)據(jù)庫相關(guān)功能是生成模型圖的能力,更好地可視化模型之間的相互關(guān)系。但是,需要安裝pygraphviz庫才能啟用該功能。
Web2py通過對jQuery和AJAX的集成支持,提供許多其他專業(yè)級組件:國際化功能,多種緩存方法,訪問控制和授權(quán),甚至前端效果(例如,表單中的日期選擇器)。雖然不允許使用中間件來替換核心Web2py功能,但也包括外部和內(nèi)部中間件的掛鉤。
Web2py的一個重要限制是它僅與Python 2.x兼容。首先,這意味著Web2py無法使用Python 3的異步語法。如果你依賴于Python 3獨有的外部庫,那么你就不走運(yùn)了。但是,正在開展使Web2py Python 3兼容的工作,并且在撰寫本文時它已接近完成。
毫無疑問,Web2py的文檔被稱為“書”。首先,它涵蓋了Web2py,Python以及用于這兩者的部署環(huán)境的大量材料。其次,它以高度可訪問的敘事風(fēng)格書寫。第三,它深入討論了常見的應(yīng)用程序構(gòu)建方案。例如,有一整章使用jQuery(與Web2Py捆綁在一起)來構(gòu)建AJAX應(yīng)用程序。
Weppy
Weppy感覺就像Flask的簡約風(fēng)格和Django的完整性之間的中間標(biāo)記。雖然開發(fā)Weppy應(yīng)用程序具有Flash的直接性,但Weppy具有Django中的許多功能,如數(shù)據(jù)層和身份驗證。因此,Weppy適用于從極其簡單到適度復(fù)雜的應(yīng)用程序。
乍一看,Weppy代碼看起來很像Flask或Bottle代碼。啟動和運(yùn)行基本的單路網(wǎng)站需要很少的指示。路徑可以通過函數(shù)裝飾器(簡單方法)或以編程方式描述,并且這樣做的語法與Flask/Bottle密切相關(guān)。除了語法的微小變化外,模板的工作方式大致相同。
Weppy與其他框架形成鮮明對比,包括它們僅作為插件或附加組件包含的一些功能。例如,F(xiàn)lask和Bottle都沒有內(nèi)置的ORM或數(shù)據(jù)管理系統(tǒng)。Weppy包含一個ORM,雖然它是基于pyDAL項目而不是更受歡迎的SQLAlchemy。Weppy甚至支持模式遷移,Django支持模式遷移作為其ORM的一部分(同樣,Django的遷移系統(tǒng)也更加自動化)。雖然Weppy有一個擴(kuò)展機(jī)制,但官方批準(zhǔn)的附加組件列表很小,遠(yuǎn)小于Flask的擴(kuò)展目錄。
像Weppy這樣的輕量級框架通常用于構(gòu)建RESTful API,而Weppy則為此配備了便利功能。在路由上放置一個@service修飾器,返回的數(shù)據(jù)將自動格式化為選擇的JSON或XML。
Weppy包含的其他功能更符合更大的框架,但它們是在沒有批量的情況下實現(xiàn)的。示例:數(shù)據(jù)驗證機(jī)制,表單處理,響應(yīng)緩存和用戶驗證。在所有這些情況下,Weppy采取“恰到好處”的方法。提供的功能并不像在Django大小的框架中那樣完整,但開發(fā)人員不需要投入大量精力來使它們變得有用,并且它們可以在事后得到擴(kuò)展。
Weppy中發(fā)現(xiàn)的另一個通常與更重量級框架相關(guān)的功能是國際化支持。模板中的字符串可以根據(jù)應(yīng)用程序提供的區(qū)域設(shè)置文件進(jìn)行翻譯,這些文件是簡單的Python字典。也可以通過解析瀏覽器請求(即Accept-Language HTTP標(biāo)頭)或?qū)⒎g綁定到特定路由來設(shè)置語言選擇。
Weppy的文檔與框架本身具有相同的風(fēng)格。它干凈,可讀,并且被人類消費。除了通常的“hello world”應(yīng)用程序示例之外,它還包含一個很好的演練教程,可以讓你創(chuàng)建一個微博系統(tǒng)作為初學(xué)者項目。
Weppy的長期計劃包括支持異步和套接字作...
Python——一個簡單的自動化測試框架 互聯(lián)網(wǎng)視頻課程
這是檸檬班的第171篇文章
最近辦公室的開發(fā)哥哥,每天都囂張的很,說讓我弄死他。于是我本著善良助人的天性,來學(xué)習(xí)接口自動化,并準(zhǔn)備在他快下班的時候,給他多提幾十個bug。嗯,就是這樣,對的,沒錯
開始接口自動化首先,我們要選擇一門語言,測試人員的標(biāo)配,當(dāng)然是Python3,不要問為什么,簡單粗暴,上手快沒有基礎(chǔ)的同學(xué)可以先去學(xué)習(xí)一下python基礎(chǔ)。首推菜鳥教程和廖雪峰接下來我們看一下我們的接口自動化框架的主要構(gòu)成。嘿嘿嘿
接口自動化框架一共分為6個模塊common:公共模塊,包括配置和共用的代碼source:接口封裝的類test_case:存放單元測試用例test_data:存放測試數(shù)據(jù)(這里用的是Excel)test_report:存放測試報告的地址test_result:存放測試結(jié)果的地址
公共類首先開始編寫我們的公共類
HTTP類這里封裝了2個函數(shù),一個get請求,一個post請求,并以data形式返回測試結(jié)果
讀取配置文件的類其實就是為了把什么固定的ip地址,端口,數(shù)據(jù)庫連接信息啦放在配置文件里面,并通過類讀取調(diào)用,實現(xiàn)數(shù)據(jù)分離,更加靈活
讀取Excel的類將測試數(shù)據(jù)放在Excel中,通過Excel進(jìn)行數(shù)據(jù)管理,如下圖
存放測試數(shù)據(jù)然后通過Excel類讀取調(diào)用,這些就實現(xiàn)了Excel管理測試用例,然后想測什么接口,就直接在Excel里面加就行。想想都爽,成功的走向了,弄死同事的第一步。
這是我們的核心代碼
將測試結(jié)果寫入Excel,并生成HTML測試報告發(fā)送到郵箱,這樣,我們就可以坐在靠椅上,喝著咖啡,看著代碼,然后等著郵件,最后再提上一大堆bug,嗯,大概生活就是如此的美好
最后讓我們來執(zhí)行我們的main函數(shù)對,沒錯,真相只有一個。見證奇跡的時候到了,然后就會生成我們想要的測試報告和測試結(jié)果
主函數(shù)入口
執(zhí)行main的日志測試報告吶,一個嶄新的測試報告就這么出來了,驚不驚喜,意不意外。就這樣我們一起走向弄死同事的不歸路。(ps:其實我們還是很相親相愛的,當(dāng)然,是他死我活)
測試報告下次有時間會再聊上五毛錢的基于Jenkins持續(xù)集成自動化的實踐,當(dāng)然這都是自己瞎搗鼓的,有大神的,請留言,一起共同進(jìn)步。
2018年要學(xué)習(xí)的10大Python Web框架 營銷視頻課程
通過為開發(fā)人員提供應(yīng)用程序開發(fā)結(jié)構(gòu),框架使開發(fā)人員的生活更輕松。他們自動執(zhí)行通用解決方案,縮短開發(fā)時間,并允許開發(fā)人員更多地關(guān)注應(yīng)用程序邏輯而不是常規(guī)元素。
在本文中,我們分享了我們自己的前十大Python Web框架列表,我們認(rèn)為這些列表對于您成為專業(yè)后端開發(fā)人員以及改進(jìn)現(xiàn)有技能集的方式將會非常有用。請記住,這些框架并沒有按照特定的順序排列:我們專注于展示你能做什么,而不是告訴你應(yīng)該做什么。
有些事情要考慮
在決定使用哪個框架時,請查看項目的規(guī)模和復(fù)雜程度。如果您希望開發(fā)的是一個包含功能和需求的大型系統(tǒng),那么全棧框架可能是正確的選擇。如果你的應(yīng)用在更小和更簡單的一面,你應(yīng)該考慮一個微框架。
你可以找到一些框架的種類和焦點信息在這里。但是,最終的決定應(yīng)該來自您對項目的理解以及您想要簡化的任務(wù)。
但是,框架也可能阻礙發(fā)展。在選擇全??蚣軙r,您經(jīng)常注冊一組限制。當(dāng)然,你可以找到解決這些問題的方法,但要小心,不要花更多的時間來爭取自己的自由,而是要用純Python編寫應(yīng)用程序。
全堆??蚣?/p>
Django是一個免費的開源全棧Python框架。它試圖默認(rèn)包含所有必要的功能,而不是將它們作為單獨的庫提供。
Django的一些示例性功能是它的身份驗證,URL路由,,對象關(guān)系映射器(ORM)和數(shù)據(jù)庫模式遷移(Django v.1.7 +)。
Django使用它的ORM將對象映射到數(shù)據(jù)庫表。相同的代碼適用于不同的數(shù)據(jù)庫,并不難從一個數(shù)據(jù)庫轉(zhuǎn)移到另一個數(shù)據(jù)庫。Django使用的主要數(shù)據(jù)庫是PostgreSQL,MySQL,SQLite和Oracle,但第三方驅(qū)動程序也允許您使用其他數(shù)據(jù)庫。
在SteelKiwi,我們使用Django作為后端開發(fā)的主要框架。如果您想看看我們已經(jīng)使用Django開發(fā)的驚人的應(yīng)用程序,請訪問我們的項目頁面。
Pyramid是一個開源的基于Python的Web應(yīng)用程序框架。其主要目標(biāo)是盡可能以最小的復(fù)雜性進(jìn)行操作。
金字塔最顯著的特點是它能夠同時適用于小型和大型應(yīng)用程序。金字塔的一些很棒的功能包括:
單文件應(yīng)用程序
全面支持模板和資產(chǎn)規(guī)范
靈活的認(rèn)證和授權(quán)
,支持和全面的數(shù)據(jù)文檔
和許多每個路由視圖
TurboGears是一個開源的,數(shù)據(jù)驅(qū)動的全棧Web應(yīng)用程序框架。
它允許您快速開發(fā)可擴(kuò)展的數(shù)據(jù)驅(qū)動的Web應(yīng)用程序。TurboGears配備了用戶友好的模板和強(qiáng)大靈活的ORM。
TurboGears的一些獨特功能包括:
多數(shù)據(jù)庫支持
MVC風(fēng)格的架構(gòu)
支持SQLObject和SQLAlchemy
和Genshi包含在首選的模板語言中
使用FormEncode進(jìn)行驗證
作為網(wǎng)絡(luò)服務(wù)器的塔
一個簡化前端設(shè)計和服務(wù)器開發(fā)協(xié)調(diào)的應(yīng)用程序庫
模板
面向前端的基于WSGI的服務(wù)器(粘貼HTTP服務(wù)器,CherryPy WSGI / HTTP服務(wù)器等)
命令行工具
集成
所有功能都作為函數(shù)裝飾器實現(xiàn)
Web2py是一個可擴(kuò)展的開源全棧Python框架。但是,在進(jìn)一步閱讀之前,您應(yīng)該知道Web2py不支持Python 3。
不過,Web2py的優(yōu)點在于它配備了自己的基于Web的IDE,其中包括代碼編輯器,調(diào)試器和一鍵式部署。
其他有價值的Web2py功能包括:
沒有安裝和配置要求
能夠在Windows,Mac,Linux / Unix,Google App Engine,Amazon EC2以及任何支持Python 2.5-2.7或Java + Python的虛擬主機(jī)上運(yùn)行
多種協(xié)議的可讀性
數(shù)據(jù)安全可防止跨站點腳本,注入漏洞和惡意文件執(zhí)行等漏洞
成功使用軟件工程實踐,使代碼易于閱讀和維護(hù)
錯誤跟蹤,徹底的錯誤記錄和票務(wù)
支持國際化
向后兼容性確保以用戶為導(dǎo)向,而不需要失去與早期版本的聯(lián)系
Flask是一個在BSD許可下可用的Python框架。它受到了Sinatra Ruby框架的啟發(fā)。Flask依賴于Werkzeug WSGI工具包和Jinja2模板。
Flask背后的主要思想是幫助構(gòu)建堅實的Web應(yīng)用程序基礎(chǔ)。從那里,你可以使用任何你可能需要的擴(kuò)展。
Flask的輕量化和模塊化設(shè)計使其能夠輕松適應(yīng)開發(fā)人員的需求。它包含許多有用的開箱即用功能:
內(nèi)置開發(fā)服務(wù)器和快速調(diào)試器
集成支持單元測試
安全的Cookie支持(客戶端會話)
WSGI 1.0合規(guī)性
基于Unicode
能夠插入任何ORM
HTTP請求處理
瓶子是一個微框架。Bottle最初意味著構(gòu)建API,它將所有內(nèi)容都實現(xiàn)在一個源文件中。除了Python標(biāo)準(zhǔn)庫之外,它沒有任何依賴關(guān)系。使用Bottle進(jìn)行編碼可以讓您更接近金屬而不是使用任何全??蚣苓M(jìn)行編碼。
其默認(rèn)功能包括路由,模板,實用程序以及WSGI標(biāo)準(zhǔn)的基本抽象。
路由 - 支持對函數(shù)調(diào)用映射的請求,使您可以實現(xiàn)干凈和動態(tài)的URL
模板 - 快速和Pythonic 開箱即用,全面支持mako,jinja2和獵豹
實用程序 - 舒適地訪問表單數(shù)據(jù),文件上傳,Cookie,標(biāo)題和其他與HTTP相關(guān)的元數(shù)據(jù)
服務(wù)器-支持一個內(nèi)置的HTTP開發(fā)服務(wù)器fapws3,比約恩,GAE,СherryPy,以及任何其他WSGI能力的HTTP服務(wù)器
Bottle是原型開發(fā),學(xué)習(xí)Web框架組織以及構(gòu)建簡單個人應(yīng)用的完美解決方案。
CherryPy是一個開源,極簡主義的Web框架。它使構(gòu)建Python Web應(yīng)用程序與構(gòu)建任何其他面向?qū)ο蟮某绦驘o異。
事實上,CherryPy支持的網(wǎng)絡(luò)應(yīng)用程序是一個獨立的Python應(yīng)用程序,它嵌入了自己的多線程網(wǎng)絡(luò)服務(wù)器。CherryPy應(yīng)用程序可在任何支持Python的操作系統(tǒng)上運(yùn)行(Windows,MacOS,Linux等)。它們可以部署在任何可以運(yùn)行普通Python應(yīng)用程序的地方。CherryPy應(yīng)用程序不需要Apache,但是您可以在Apache后面運(yùn)行CherryPy應(yīng)用程序,以及在Lighttpd或IIS后面運(yùn)行它。
CherryPy不是一個非常有限的框架,因為它允許您使用任何類型的技術(shù)進(jìn)行模板化,數(shù)據(jù)訪問等。但是,它仍然能夠處理會話,靜態(tài),Cookie,文件上傳以及web框架通??梢詧?zhí)行的其他任何操作。
一些默認(rèn)的CherryPy功能包括:
一個HTTP / 1.1兼容WSGI線程池網(wǎng)絡(luò)服務(wù)器
簡單一次運(yùn)行多個HTTP服務(wù)器
一個強(qiáng)大的配置系統(tǒng)
一個靈活的插件系統(tǒng)
出的現(xiàn)成的工具緩存,編碼,會話,認(rèn)證,靜態(tài)內(nèi)容,并等
內(nèi)置支持分析,覆蓋和測試
能夠在Python 2.7+,Python 3.1+,PyPy,Jython和Android上運(yùn)行
異步框架
Sanic是一個構(gòu)建在uvloop上的Python Web框架,專門為通過異步請求處理的快速HTTP響應(yīng)而創(chuàng)建。
它運(yùn)行在Python 3.5+上。Sanic支持異步請求處理程序,這使它與Python 3.5的異步/等待函數(shù)兼容。這提高了速度,提供了非阻塞功能。
在一個進(jìn)程和100個連接的基準(zhǔn)測試中,Sanic每秒能夠處理33,342個請求。
Tornado是一個Python Web框架和異步網(wǎng)絡(luò)庫。它使用非阻塞網(wǎng)絡(luò)I / O并解決C10k問題(意思是說,如果配置正確,它可以處理10,000多個并發(fā)連接)。
這使它成為構(gòu)建需要高性能和數(shù)萬并發(fā)用戶的應(yīng)用程序的理想工具。
龍卷風(fēng)的主要特點是:
內(nèi)置的用戶認(rèn)證支持
實時服務(wù)
高品質(zhì)的性能
基于Python的網(wǎng)頁模板語言
非阻塞HTTP客戶端
實施第三方認(rèn)證和授權(quán)計劃(Google OpenID / OAuth,F(xiàn)acebook登錄,雅虎BBAuth,F(xiàn)riendFeed OpenID / OAuth,)
支持翻譯和本土化
其他
Dash是一個開源Python框架,用于構(gòu)建分析型Web應(yīng)用程序。對于不熟悉Web開發(fā)的Python數(shù)據(jù)科學(xué)家來說,這尤其有利。
Dash應(yīng)用程序是運(yùn)行并通過HTTP請求與JSON數(shù)據(jù)包進(jìn)行通信的Web服務(wù)器。他們的前端使用呈現(xiàn)組件
使用Dash開發(fā)的應(yīng)用程序在Web瀏覽器中呈現(xiàn),并可以部署到服務(wù)器。這也意味著Dash應(yīng)用程序本質(zhì)上是跨平臺和移動就緒的。
Dash開發(fā)人員可以訪問底層Flask實例及其所有可配置屬性。為了擴(kuò)展Dash應(yīng)用程序的功能,開發(fā)人員還可以使用一套豐富的
選擇一個Python Web框架
正確的框架可能是您開發(fā)一個成功項目所需的一切。我們真的希望你在本文中找到了一個有趣的框架。如果您有興趣探索更多選項。
另外,歡迎私信小編交流 Python 的學(xué)習(xí)經(jīng)驗哦