此文部分參照《Python高效開發(fā)實戰(zhàn)》--劉長龍
Python網(wǎng)絡(luò)框架
網(wǎng)絡(luò)框架指一組python包,它能夠讓開發(fā)者更加專注于網(wǎng)站應(yīng)用業(yè)務(wù)邏輯的開發(fā),而無須處理網(wǎng)絡(luò)應(yīng)用層的協(xié)議勉盅、線程、進(jìn)程等方面馁蒂,從而提高開發(fā)者的工作效率以及網(wǎng)絡(luò)應(yīng)用程序的質(zhì)量档冬。
目前Python語言的十幾個開發(fā)框架中,幾乎所有的全棧網(wǎng)絡(luò)框架都強制或引導(dǎo)開發(fā)者使用MVC架構(gòu)開發(fā)Web應(yīng)用.
Python的四種主流框架為:Django/Flask/Tornado/Twisted
此篇博文圍繞Django/Flask講解各自特點以及主要應(yīng)用.
MVC:
- MVC--M(Model):封裝與應(yīng)用程序相關(guān)的業(yè)務(wù)邏輯的數(shù)據(jù)及對數(shù)據(jù)的處理方法,是處理數(shù)據(jù)邏輯的部分.Model提供功能性接口,通過接口訪問數(shù)據(jù);
- MVC--V(View):負(fù)責(zé)數(shù)據(jù)的顯示和呈現(xiàn),View是對用戶的直接輸出;
- MVC--C(Controller):從用戶端收集用戶的輸入,可以看作View的反向功能,Controller將用戶作出的改變返回給Model,由Model在返回給View,Model作為數(shù)據(jù)中心,從而提高數(shù)據(jù)的一致性;
ORM(Object-Relational Mapping 對象關(guān)系映射):是在關(guān)系型數(shù)據(jù)庫和業(yè)務(wù)實體對象之間的映射,即開發(fā)者對對象與屬性進(jìn)行操作,而不用再去寫復(fù)雜的sql語句,ORM必須具備三方面功能:
- 映射技術(shù):
- 數(shù)據(jù)類型映射
- 類映射
- 關(guān)系映射
- CRUD操作:(ORM將這些調(diào)用轉(zhuǎn)換為SQL語句,通過引擎發(fā)送給數(shù)據(jù)庫執(zhí)行,將結(jié)果記錄并轉(zhuǎn)換為對象)
- create增加
- Retrieve讀取
- Upadate更新
- Delete刪除
- 緩存優(yōu)化:由于數(shù)據(jù)庫的操作通常比較耗時,所以大多數(shù)ORM提供數(shù)據(jù)緩存優(yōu)化的功能
Django
Django發(fā)布于2003年,是當(dāng)前最成熟完整最廣泛以及最富盛名的Python網(wǎng)絡(luò)框架.Django定義了服務(wù)發(fā)布;路由映射;模板編程;數(shù)據(jù)處理的一整套功能.遵循MVC架構(gòu).
優(yōu)點:
- 各模塊之間結(jié)合緊密;
- 功能強大而相對封閉;
- 完整的在線文檔及健全的開發(fā)社區(qū);
- 具備自帶優(yōu)秀的ORM;
- 強大的URL映射技術(shù);
- 后臺管理系統(tǒng)自動生成;
- 用戶多,第三方庫豐富;
- 成熟穩(wěn)定完善,適合企業(yè)級網(wǎng)站開發(fā)
缺點:
- 由于自帶的豐富功能造成的冗余/耦合程度較高;
- 可能相對較重,比如開發(fā)小應(yīng)用時,可能會不夠靈活/自由;
Flask
Flask發(fā)布于2010年,它吸收了其他框架的優(yōu)點并且把自己的主要領(lǐng)域定義在微小項目上.作為微框架,安裝時不會自動安裝ORM數(shù)據(jù)組件等其他組件,所以開發(fā)者需要自行安裝需要的組件.
優(yōu)點:
- 內(nèi)置開發(fā)服務(wù)器和調(diào)試器:Flask默認(rèn)處于調(diào)試狀態(tài),運行時會將錯誤返回給控制臺以及HTTP客戶端;
- 與Python單元測試功能無縫連接:測試程序可以模擬進(jìn)行HTTP訪問的客戶端來調(diào)用Flask路由處理函數(shù),并且獲取函數(shù)的輸出來進(jìn)行自定義的驗證;
- 使用Jinja2模板,強大程度略高于Django的自帶模板;
- 完全兼容WSGI 1.0 標(biāo)準(zhǔn);
- 給予Unicode編碼;
- 完美適合小型網(wǎng)站;
- 第三方庫同樣豐富;
- 開發(fā)靈活程度高,入門簡單;
缺點:
- 很多東西需要從頭構(gòu)建;
- 用的第三方插件可能要踩的坑較多;