朱贇
摘要:Python是腳本語言,開發(fā)代碼效率高。Python語言具有開源和跨平臺的特點,在設計Web應用程序設計開發(fā)中有很大優(yōu)勢。該文介紹了Python的特點以及幾種常見的Web開發(fā)框架。
關鍵詞:Python;Web開發(fā);云計算
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2017)32-0095-02
1 Python語言的特點
Python語言是第四代程序設計語言,是解釋性的、交互性的和面向?qū)ο蟮?。它在Web應用和非Web應用中都發(fā)揮了重要的作用。比如Google的核心代碼是用Python語言寫的,國內(nèi)著名的豆瓣網(wǎng)也使用Python技術。Python是腳本語言,開發(fā)代碼效率高,使用第三方標準庫,可以用簡潔易讀的代碼描述強大功能。
Python語言的易讀性體現(xiàn)在代碼行少,同樣功能的代碼行可以是C語言的五分之一。另一方面也體現(xiàn)在它沒有花括號或者begin...end...來分割語句塊,避免了花括號匹配錯誤的問題。Python語言使用冒號來區(qū)分代碼之間的層詞,比如條件語句的書寫:
if True:
print “Yes”
這個if語句末尾的冒號,表示第二行的print語句是下一層次的語句,需要滿足條件才能執(zhí)行到。
2 Python語言的Web應用
Python語言具有開源和跨平臺的特點,在設計Web應用程序設計開發(fā)中有很大優(yōu)勢。Python語言采用WSGI模型,是Python服務器、應用程序和中間層之間的官方規(guī)范標準,局限是不支持異步模型。同時,Python也逐漸成為網(wǎng)游行業(yè)的主流編程語言,代替了原來的C/C++。
Python語言在云技術的應用中,實現(xiàn)了很多底層的虛擬化。云計算把所有的資源以服務的方式提供給客戶,包括Iaas/Paas/Saas等,比如易度的Paas平臺就是基于Python語言的。Python可以通過標準庫解決大數(shù)據(jù)處理的問題,完成數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)分析、處理,最后提取數(shù)據(jù)特征并能需要的結(jié)構(gòu)形式呈現(xiàn)。
3 常見的Web開發(fā)框架
以下是五種較為常見的Python領域的Web開發(fā)框架。
3.1 Django
Django是一個常見的Python Web應用框架。它是開源的Web開發(fā)框架,包含了多種組件,可以實現(xiàn)關系映射、動態(tài)內(nèi)存管理、界面管理等功能。Django開發(fā)采用DRY原則,同時擁有獨立的輕量級Web服務器,能快速開發(fā)Web應用。
Django開發(fā)遵循MVC模式,包括模型·、視圖、控制三部分。模型層是應用程序底層,主要負責處理與數(shù)據(jù)有關的事務,如數(shù)據(jù)存取驗證等。由于Django中用戶輸入控制模塊是由框架處理的,也可以稱為模板層。模板層負責展現(xiàn)數(shù)據(jù),負責模板的存取和正確調(diào)用模板等業(yè)務。程序員使用模板語言來渲染HTML頁面,給模板所需顯示的信息,使用既定的模板來渲染結(jié)果。視圖層組成應用程序的業(yè)務邏輯,負責在網(wǎng)頁或其他類型的文檔中展示數(shù)據(jù)。
Django的工作過程:
1) 瀏覽器向Web服務器發(fā)送HTTP請求。
2) Web服務器收到請求轉(zhuǎn)發(fā)給Django應用。
3) Django請求中間件層,按照URLconf模式來匹配、映射到合適的視圖函數(shù)上;視圖函數(shù)利用模型和模板,按照要求生成相應的響應;中間件層把響應封裝成HTTP響應,返回給Web服務器。
4) Web服務器把響應轉(zhuǎn)發(fā)給客戶端瀏覽器。
3.2 CherryPy
CherryPy是基于Python的面向?qū)ο蟮腍TTP框架,適合Python開發(fā)者。使用CherryPy來開發(fā)Web 應用,但CherryPy并沒用提供一種模板語言機制。CherryPy自身內(nèi)置了一個Web服務器。CherryPy的用戶不需另外搭設Web服務器,能直接在內(nèi)置的服務器上運行應用程序。服務器負責:一方面把底層TCP套接字傳輸?shù)男畔⑥D(zhuǎn)換成Http請求,并傳遞給相應的處理程序;另一方面把上層軟件傳來的信息打包成Http響應,向下傳遞給底層的TCP套接字。
3.3 Flask
Flask適合開發(fā)輕量級的Web應用。它的服務器網(wǎng)關接口工具箱采用 Werkzeug,模板引擎使用Jinja2。Flask使用BSD授權(quán)。Flask自身沒有如表單驗證和數(shù)據(jù)庫抽象層等一些基本功能,而是依靠第三方庫來完成這些工作。Flask的結(jié)構(gòu)是可擴展的,可以比較容易地為它添加一些需要的功能。
3.4 Pyramid
Pyramid是開源框架,執(zhí)行效率高,開發(fā)周期短。Pyramid包含了Python/Perl/Ruby的特性,具有不依賴于平臺的MVC架構(gòu),以及最快的啟動開發(fā)的能力。
3.5 TurboGear
TurboGear建立在其他框架基礎上,它試圖把其他框架優(yōu)秀的部分集成到一起。它允許開發(fā)者從一個單文件服務開始開發(fā),逐步擴展為一個全棧服務。
3.6 Flask、Pyramid和Django的比較
Flask主要面向需求簡單的小應用,是一個微框架。Pyramid和Django都是面向大的應用。但是后兩者在擴展性和靈活性有所不同。Pyramid注重靈活性,開發(fā)者在開發(fā)項目時可以選擇合適的工具,比如選擇數(shù)據(jù)庫、URL結(jié)構(gòu)、模板風格等。Django為開發(fā)者提供web應用開發(fā)的一站式解決方案,它包含的模塊比較多。
Django包含了一個ORM模塊,Pyramid和Flask的開發(fā)者可以自行選擇數(shù)據(jù)存儲工具,較流行的ORM目前是SQLAlchemy,或者選擇DynamoDB和MongoDB等。
Django是一站式解決的框架,開發(fā)者不用花費大量時間在選擇應用的基礎設施的工作上。它包含模板、表單、路由、驗證和基本的數(shù)據(jù)庫管理等內(nèi)建功能。Pyramid包含路由和驗證功能,而模板和數(shù)據(jù)庫管理需要利用第三方庫來完成。用Flask和Pyramid來構(gòu)建應用,開發(fā)者自行選擇組件,具有更多的靈活性。
4 結(jié)束語
Python語言具有開源和跨平臺的特點,簡潔高效的代碼使得該語言的應用越來越廣泛,在Web開發(fā)框架的支持下,Python在Web開發(fā)領域的應用也將越來越多。Django作為一站式解決方案,可能缺乏開發(fā)靈活性,而Pyramid等框架提供的可定制方案更適合于一些需要靈活應用的場合。
參考文獻:
[1] 肖旻,陳行. 基于Python語言編程特點及應用之探討[J]. 電腦知識與技術,2014, 10(34)
[2] 龔新定, 余艷梅. 基于Django的實驗室信息管理系統(tǒng)設計[J]. 微信機與應用,2016, 35(22)
[3] 詩書塞外. 5個最好的Python Web開發(fā)框架[EB/OL]. https://python.freelycode.com/contribution/detail/494.
[4] Flask、Django、Pyramid三個框架的對比[EB/OL]. http://blog.csdn.net/kuaileboy1989/article/details/45867085.endprint