網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
python 框架
八款常用的 Python GUI 開發(fā)框架推薦 行業(yè)視頻課程
作為Python開發(fā)者,你遲早都會用到圖形用戶界面來開發(fā)應(yīng)用。本文將推薦一些 Python GUI 框架,希望對你有所幫助,如果你有其他更好的選擇,歡迎在評論區(qū)留言。
Python 的 UI 開發(fā)工具包 Kivy
https://oschina/p/kivy
Kivy是一個開源工具包能夠讓使用相同源代碼創(chuàng)建的程序能跨平臺運(yùn)行。它主要關(guān)注創(chuàng)新型用戶界面開發(fā),如:多點(diǎn)觸摸應(yīng)用程序。Kivy還提供一個多點(diǎn)觸摸鼠標(biāo)模擬器。當(dāng)前支持的平臺包括:Linux、Windows、Mac OS X和Android。
Kivy擁有能夠處理動畫、緩存、手勢、繪圖等功能。它還內(nèi)置許多用戶界面控件如:按紐、攝影機(jī)、表格、Slider和樹形控件等。
Python 的 GUI 開發(fā)工具 Flexx
https://oschina/p/flexx
Flexx 是一個純 Python 工具包,用來創(chuàng)建圖形化界面應(yīng)用程序。其使用 Web 技術(shù)進(jìn)行界面的渲染。你可以用 Flexx 來創(chuàng)建桌面應(yīng)用,同時也可以導(dǎo)出一個應(yīng)用到獨(dú)立的 HTML 文檔。因為使用純 Python 開發(fā),所以 Flexx 是跨平臺的。只需要有 Python 和瀏覽器就可以運(yùn)行。如果是使用桌面模式運(yùn)行,推薦使用 Firefox 。
Qt 庫的 Python 綁定 PyQt
https://oschina/p/pyqt
PyQt是Qt庫的Python版本。PyQt3支持Qt1到Qt3。 PyQt4支持Qt4。它的首次發(fā)布也是在1998年,但是當(dāng)時它叫 PyKDE,因為開始的時候SIP和PyQt沒有分開。PyQt是用SIP寫的。PyQt 提供 GPL版和商業(yè)版。
Python圖形開發(fā)包 wxPython
https://oschina/p/wxpython
wxPython 是 Python 語言的一套優(yōu)秀的 GUI 圖形庫,允許 Python 程序員很方便的創(chuàng)建完整的、功能鍵全的 GUI 用戶界面。 wxPython 是作為優(yōu)秀的跨平臺 GUI 庫 wxWidgets 的 Python 封裝和 Python 模塊的方式提供給用戶的。
就如同Python和wxWidgets一樣,wxPython也是一款開源軟件,并且具有非常優(yōu)秀的跨平臺能力,能夠運(yùn)行在32位windows、絕大多數(shù)的Unix或類Unix系統(tǒng)、Macintosh OS X上。
Tk 圖形用戶界面 Tkinter
https://oschina/p/tkinter
Tkinter(也叫Tk接口)是Tk圖形用戶界面工具包標(biāo)準(zhǔn)的Python接口。Tk是一個輕量級的跨平臺圖形用戶界面(GUI)開發(fā)工具。Tk和Tkinter可以運(yùn)行在大多數(shù)的Unix平臺、Windows、和Macintosh系統(tǒng)。
Tkinter 由一定數(shù)量的模塊組成。Tkinter位于一個名為_tkinter(較早的版本名為tkinter)的二進(jìn)制模塊中 。Tkinter包含了對Tk的低 級接口模塊,低級接口并不會被應(yīng)用級程序員直接使用,通常是一個共享庫(或DLL),但是在一些情況下它也被Python解釋器靜態(tài)鏈接。
Pywin32
https://oschina/p/pywin32
Windows Pywin32允許你像VC一樣的形式來使用PYTHON開發(fā)win32應(yīng)用。代碼風(fēng)格可以類似win32 sdk,也可以類似MFC,由你選擇。如果你仍不放棄vc一樣的代碼過程在python下,那么這就是一個不錯的選擇。
Python 圖形界面開發(fā)包 PyGTK
https://oschina/p/pygtk
PyGTK讓你用Python輕松創(chuàng)建具有圖形用戶界面的程序.底層的GTK+提供了各式的可視元素和功能,如果需要,你能開發(fā)在GNOME桌面系統(tǒng)運(yùn)行的功能完整的軟件.
PyGTK真正具有跨平臺性,它能不加修改地,穩(wěn)定運(yùn)行各種操作系統(tǒng)之上,如Linux,Windows,MacOS等.除了簡單易用和快速的原型開發(fā)能力外,PyGTK還有一流的處理本地化語言的獨(dú)特功能.
用python快速開發(fā)絢麗桌面程序 pyui4win
https://oschina/p/py-ui4win
pyui4win是一個開源的采用自繪技術(shù)的界面庫。支持C++和python。用它可以很容易實現(xiàn)QQ和360安全衛(wèi)士這樣的絢麗界面。而且,pyui4win有所見即所得界面設(shè)計器,讓C++開發(fā)人員和python開發(fā)人員直接用
設(shè)計工具設(shè)計界面,而不用關(guān)心界面如何生成和運(yùn)行,可以顯著縮短界面開發(fā)時間。在pyui4win中,界面甚至可以完全交給美工去處理,開發(fā)人員可以只負(fù)責(zé)處理業(yè)務(wù)邏輯,把開發(fā)人員徹底從繁雜的界面處理中解放出來。
文章來源:開源中國
文章編輯:燈塔大數(shù)據(jù)
Python的框架可以用來做什么? 流量視頻課程
初學(xué)者有什么不懂的可以私信我——我剛整理了一套2018最新的0基礎(chǔ)入門教程,無私分享,獲取方法:關(guān)注小編頭條號,發(fā)私信:【學(xué)習(xí)資料】 即可獲取,內(nèi)附:開發(fā)工具和安裝包,以及系統(tǒng)學(xué)習(xí)路線圖。
python能夠用來干什么?
1、WEB前端
效勞器端編程,具有豐厚的Web開發(fā)框架,如Django和TurboGears,快速完成一個網(wǎng)站的開發(fā)和Web效勞。典型如國內(nèi)的豆瓣、果殼網(wǎng)等;國外的Google、Dropbox等。
2、系統(tǒng)網(wǎng)絡(luò)運(yùn)維
在運(yùn)維的作業(yè)中,有大量重復(fù)性作業(yè)的地方,并需要做管理系統(tǒng)、監(jiān)控系統(tǒng)、發(fā)布系統(tǒng)等,將作業(yè)自動化起來,進(jìn)步作業(yè)效率,這樣的場景Python是一門十分合適的語言。
3、科學(xué)與數(shù)字核算
Python被廣泛的運(yùn)用于科學(xué)和數(shù)字核算中,例如生物信息學(xué)、物理、建筑、地理信息系統(tǒng)、圖畫可視化分析、生命科學(xué)等,常用numpy、SciPy、Biopython、SunPy等。
4、3D游戲開發(fā)
Python有很好的3D渲染庫和游戲開發(fā)框架,有許多運(yùn)用Python開發(fā)的游戲,如迪斯尼卡通城、黑暗之刃。常用PyGame、Pykyra等和一個PyWeek的比賽。
5、圖形界面開發(fā)
Python可編寫桌面圖形用戶界面,還能夠擴(kuò)展微軟的Windows,常用Tk、GTK+、PyQt、win32等。
6、網(wǎng)絡(luò)編程
除了網(wǎng)絡(luò)和互聯(lián)網(wǎng)的支撐,Python還供給了對底層網(wǎng)絡(luò)的支撐,有易于運(yùn)用的Socket接口和一個異步的網(wǎng)絡(luò)編程框架Twisted Python.
今天的文章給大家?guī)У竭@里,一直在堅持給大家更新文章,如果對你有所幫助,可以多多轉(zhuǎn)發(fā)和關(guān)注。
初學(xué)者有什么不懂的可以私信我——我剛整理了一套2018最新的0基礎(chǔ)入門教程,無私分享,獲取方法:關(guān)注小編頭條號,發(fā)私信:【學(xué)習(xí)資料】 即可獲取,內(nèi)附:開發(fā)工具和安裝包,以及系統(tǒng)學(xué)習(xí)路線圖。
python哪幾種開源框架成為大主流【菜鳥必看】 互聯(lián)網(wǎng)視頻課程
使用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語言寫的免費(fèi)開源的 Python Web應(yīng)用開發(fā)框架,是當(dāng)前Python世界里最負(fù)盛名且最成熟的網(wǎng)絡(luò)框架。最初用來制作在線新聞的Web站點(diǎn),目前已發(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)點(diǎn)并且把自己的主要領(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)注我頭條號。
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)該考慮一個微框架。
你可以找到一些框架的種類和焦點(diǎn)信息在這里。但是,最終的決定應(yīng)該來自您對項目的理解以及您想要簡化的任務(wù)。
但是,框架也可能阻礙發(fā)展。在選擇全??蚣軙r,您經(jīng)常注冊一組限制。當(dāng)然,你可以找到解決這些問題的方法,但要小心,不要花更多的時間來爭取自己的自由,而是要用純Python編寫應(yīng)用程序。
全堆??蚣?/p>
Django是一個免費(fèi)的開源全棧Python框架。它試圖默認(rèn)包含所有必要的功能,而不是將它們作為單獨(dú)的庫提供。
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)行操作。
金字塔最顯著的特點(diǎ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的一些獨(dú)特功能包括:
多數(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)點(diǎn)在于它配備了自己的基于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ù)安全可防止跨站點(diǎn)腳本,注入漏洞和惡意文件執(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)行編碼可以讓您更接近金屬而不是使用任何全棧框架進(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)用程序是一個獨(dú)立的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)的主要特點(diǎn)是:
內(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)驗哦
13個Python web框架比較 公司視頻課程
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操作的原生支持。
安全性:提供原生安全措施(如跨站點(diǎn)請求偽造(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ù)點(diǎn)的左邊創(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獲得;單獨(dú)安裝但作為項目的一部分支持。通過第三方擴(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的文檔站點(diǎn)從多個角度深入研究框架的各個方面。使用Python 3或其他語言,正確的安全性,實現(xiàn)常見的Web應(yīng)用程序組件(如會話或分頁),生成站點(diǎn)地圖,它們都被覆蓋。還詳細(xì)描述了應(yīng)用程序模型,視圖和模板的每個層的API。
然而,強(qiáng)大的力量帶來了極大的復(fù)雜性。Django應(yīng)用程序以其頭重腳輕而聞名,具有許多移動部件。即使只有幾條路線的簡單Django應(yīng)用程序也需要相當(dāng)多的配置才能運(yùn)行。如果你的工作只是設(shè)置幾個簡單的REST端點(diǎn),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)建者提供的版本基本上是獨(dú)立服務(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獨(dú)有的外部庫,那么你就不走運(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)格。它干凈,可讀,并且被人類消費(fèi)。除了通常的“hello world”應(yīng)用程序示例之外,它還包含一個很好的演練教程,可以讓你創(chuàng)建一個微博系統(tǒng)作為初學(xué)者項目。
Weppy的長期計劃包括支持異步和套接字作...
Python的框架可以用來做什么? 流量視頻課程
初學(xué)者有什么不懂的可以私信我——我剛整理了一套2018最新的0基礎(chǔ)入門教程,無私分享,獲取方法:關(guān)注小編頭條號,發(fā)私信:【學(xué)習(xí)資料】 即可獲取,內(nèi)附:開發(fā)工具和安裝包,以及系統(tǒng)學(xué)習(xí)路線圖。
python能夠用來干什么?
1、WEB前端
效勞器端編程,具有豐厚的Web開發(fā)框架,如Django和TurboGears,快速完成一個網(wǎng)站的開發(fā)和Web效勞。典型如國內(nèi)的豆瓣、果殼網(wǎng)等;國外的Google、Dropbox等。
2、系統(tǒng)網(wǎng)絡(luò)運(yùn)維
在運(yùn)維的作業(yè)中,有大量重復(fù)性作業(yè)的地方,并需要做管理系統(tǒng)、監(jiān)控系統(tǒng)、發(fā)布系統(tǒng)等,將作業(yè)自動化起來,進(jìn)步作業(yè)效率,這樣的場景Python是一門十分合適的語言。
3、科學(xué)與數(shù)字核算
Python被廣泛的運(yùn)用于科學(xué)和數(shù)字核算中,例如生物信息學(xué)、物理、建筑、地理信息系統(tǒng)、圖畫可視化分析、生命科學(xué)等,常用numpy、SciPy、Biopython、SunPy等。
4、3D游戲開發(fā)
Python有很好的3D渲染庫和游戲開發(fā)框架,有許多運(yùn)用Python開發(fā)的游戲,如迪斯尼卡通城、黑暗之刃。常用PyGame、Pykyra等和一個PyWeek的比賽。
5、圖形界面開發(fā)
Python可編寫桌面圖形用戶界面,還能夠擴(kuò)展微軟的Windows,常用Tk、GTK+、PyQt、win32等。
6、網(wǎng)絡(luò)編程
除了網(wǎng)絡(luò)和互聯(lián)網(wǎng)的支撐,Python還供給了對底層網(wǎng)絡(luò)的支撐,有易于運(yùn)用的Socket接口和一個異步的網(wǎng)絡(luò)編程框架Twisted Python.
今天的文章給大家?guī)У竭@里,一直在堅持給大家更新文章,如果對你有所幫助,可以多多轉(zhuǎn)發(fā)和關(guān)注。
初學(xué)者有什么不懂的可以私信我——我剛整理了一套2018最新的0基礎(chǔ)入門教程,無私分享,獲取方法:關(guān)注小編頭條號,發(fā)私信:【學(xué)習(xí)資料】 即可獲取,內(nèi)附:開發(fā)工具和安裝包,以及系統(tǒng)學(xué)習(xí)路線圖。