網(wǎng)絡(luò)編程技術(shù):第5章 PythonWeb編程1_第1頁
網(wǎng)絡(luò)編程技術(shù):第5章 PythonWeb編程1_第2頁
網(wǎng)絡(luò)編程技術(shù):第5章 PythonWeb編程1_第3頁
網(wǎng)絡(luò)編程技術(shù):第5章 PythonWeb編程1_第4頁
網(wǎng)絡(luò)編程技術(shù):第5章 PythonWeb編程1_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第5章PythonWeb開發(fā)(1)5.1CGI、FastCGI與WSGI5.2Python

Web開發(fā)框架5.3Django安裝與使用5.1CGI、FastCGI與WSGI靜態(tài)文件資源Web服務(wù)器HTTP靜態(tài)網(wǎng)站如何根據(jù)用戶請(qǐng)求返回動(dòng)態(tài)信息?5.1CGI、FastCGI與WSGIWeb服務(wù)器HTTPCGI:通用網(wǎng)關(guān)接口(Common

Gateway

Interface)CGI就像是一座橋,把網(wǎng)頁和WEB服務(wù)器中的執(zhí)行程序連接起來,CGI使網(wǎng)頁變得不是靜態(tài)的,而是交互式的。CGI應(yīng)用程序5.1CGI、FastCGI與WSGI5.1CGI、FastCGI與WSGICGI腳本工作流程瀏覽器通過HTML表單或超鏈接請(qǐng)求指向一個(gè)CGI應(yīng)用程序的URL。服務(wù)器收發(fā)到請(qǐng)求。服務(wù)器執(zhí)行所指定的CGI應(yīng)用程序。CGI應(yīng)用程序執(zhí)行所需要的操作,通常是基于瀏覽者輸入的內(nèi)容。CGI應(yīng)用程序把結(jié)果格式化為網(wǎng)絡(luò)服務(wù)器和瀏覽器能夠理解的文檔(通常是HTML網(wǎng)頁)。網(wǎng)絡(luò)服務(wù)器把結(jié)果返回到瀏覽器中。5.1CGI、FastCGI與WSGICGI應(yīng)用程序和典型的應(yīng)用程序主要區(qū)別在于輸入、輸出以及用戶和計(jì)算機(jī)交互方面CGI程序的輸入是用戶表單,輸出是連接的Web客戶端,而不是返回到屏幕,這些返回的數(shù)據(jù)必須是一系列有效頭文件的HTML。CGI程序不直接和用戶發(fā)生交互,所有的交互發(fā)生在Web客戶端、Web服務(wù)器端和CGI應(yīng)用程序之間。5.1CGI、FastCGI與WSGI開發(fā)CGI應(yīng)用程序的編程語言Perl、PHP、C/C++、Python……CGI應(yīng)用程序和典型的應(yīng)用程序主要區(qū)別在于輸入、輸出以及用戶和計(jì)算機(jī)交互方面CGI程序的輸入是用戶表單,輸出是連接的Web客戶端,而不是返回到屏幕,這些返回的數(shù)據(jù)必須是一系列有效頭文件的HTML。CGI程序不直接和用戶發(fā)生交互,所有的交互發(fā)生在Web客戶端、Web服務(wù)器端和CGI應(yīng)用程序之間。5.1CGI、FastCGI與WSGI可以使用Web服務(wù)器(如Apache)+PythonCGI程序的方式完成Web開發(fā)也可以使用Python自帶的Web服務(wù)器+PythonCGI的方式啟動(dòng)Python自帶的Web服務(wù)器命令$python–mCGIHTTPServer注:本命令將以當(dāng)前路徑為根路徑建立一個(gè)端口號(hào)為8000的Web服務(wù)器,只需在當(dāng)前路徑下建立一個(gè)Cgi-bin目錄,并將PythonCGI腳本放在那里,就可以訪問CGI了。5.1CGI、FastCGI與WSGI示例:建立D:/Cgi-bin目錄,開啟命令行并輸入D:并回車,進(jìn)入到D盤根目錄,輸入命令啟動(dòng)python自動(dòng)web服務(wù)器python–mCGIHTTPServer編寫hellocgi.py文件,內(nèi)容如下頁,把hellocgi.py文件放置于D:/Cgi-bin然后打開瀏覽器,在地址欄中輸入::8000/cgi-bin/hellocgi.py?a=15.1CGI、FastCGI與WSGI編寫hellocgi.py文件,內(nèi)容如下,把hellocgi.py文件放置于D:/Cgi-binimportcgi

reshtml='''Content-Type:text/html\n

<html>

<head><title>helloworldCGI</title></head>

<body>

yourinputis:<B>%s</B>

</body>

</html>''‘

form=cgi.FieldStorage()

a=form['a'].value

printreshtml%(a)5.1CGI、FastCGI與WSGI瀏覽器輸出如下:命令行輸出如下:5.1CGI、FastCGI與WSGIcgi模塊中的FieldStorage類在PythonCGI腳本開始時(shí)這個(gè)類會(huì)被實(shí)例化,它會(huì)讀出Web客戶端提交來的用戶信息,它包含一個(gè)類似字典的對(duì)象,具有一系列的key-value對(duì),key就是通過表單傳入的表單條目的名字,value為相應(yīng)數(shù)據(jù)form=cgi.FieldStorage()

a=form['a'].value5.1CGI、FastCGI與WSGICgi對(duì)于每個(gè)用戶請(qǐng)求都需要啟動(dòng)一個(gè)新進(jìn)程,效率比較低,逐漸被放棄使用,被一些新的方式所取代Web服務(wù)器內(nèi)置解釋器模塊:有新的動(dòng)態(tài)請(qǐng)求進(jìn)來時(shí),web服務(wù)器就是自己解析這些perl或php腳本FastCGI:像一個(gè)常駐型的CGI,使用持續(xù)的進(jìn)程來處理一連串的請(qǐng)求。這些進(jìn)程由FastCGI進(jìn)程管理器管理,原理圖見下頁。FastCGI是語言無關(guān)的、可伸縮架構(gòu)的CGI開放擴(kuò)展WSGI:PythonWebServerGatewayInterface,PythonWeb服務(wù)器網(wǎng)關(guān)接口,目標(biāo)是要建立一個(gè)簡單的普遍適用的服務(wù)器與WEB框架之間的接口5.1CGI、FastCGI與WSGI5.1CGI、FastCGI與WSGIFastCGI的工作流程WebServer啟動(dòng)時(shí)載入FastCGI進(jìn)程管理器FastCGI進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)CGI解釋器進(jìn)程并等待連接。當(dāng)客戶端請(qǐng)求到達(dá)WebServer時(shí),F(xiàn)astCGI進(jìn)程管理器選擇并連接到一個(gè)CGI解釋器。Webserver將CGI環(huán)境變量和標(biāo)準(zhǔn)輸入發(fā)送到FastCGI子進(jìn)程FastCGI子進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一連接返回WebServer。FastCGI子進(jìn)程接著等待并處理下一個(gè)連接。在CGI模式中,php-cgi在此便退出5.1CGI、FastCGI與WSGIWSGIWSGI將web組件分為三類:web服務(wù)器,web中間件,web應(yīng)用程序wsgi基本處理模式為:WSGIServer->(WSGIMiddleware)*->WSGIApplication。5.1CGI、FastCGI與WSGIWSGIwsgiserver可以理解為一個(gè)符合wsgi規(guī)范的webserver,接收request請(qǐng)求,封裝一系列環(huán)境變量,按照wsgi規(guī)范調(diào)用注冊(cè)的wsgiapp,最后將response返回給客戶端。wsgiapplication就是一個(gè)普通的callable對(duì)象,當(dāng)有請(qǐng)求到來時(shí),wsgiserver會(huì)調(diào)用這個(gè)wsgiapp。這個(gè)對(duì)象接收兩個(gè)參數(shù),通常為environ,start_response。wsgimiddleware介于服務(wù)器程序和應(yīng)用程序之間,middleware需要把自己偽裝成一個(gè)服務(wù)器,接受應(yīng)用程序,調(diào)用它,同時(shí)middleware還需要把自己偽裝成一個(gè)應(yīng)用程序,傳給服務(wù)器程序。5.2Python

Web開發(fā)框架5.2Python

Web開發(fā)框架框架對(duì)比web.py:輕量級(jí)的開源PythonWeb框架,小巧靈活web2py:提供一站式的解決方案,整個(gè)開發(fā)過程都可以在瀏覽器上進(jìn)行Flask:也被稱為“microframework”,因?yàn)樗褂煤唵蔚暮诵?,用extension增加其他功能。Django:屬于Fullstackframework。包括了幾乎所有web開發(fā)用到的模塊。session管理、CSRF防偽造請(qǐng)求、Form表單處理、ORM數(shù)據(jù)庫對(duì)象化……5.2Python

Web開發(fā)框架官網(wǎng)/Django歷史勞倫斯出版集團(tuán)需要開發(fā)一個(gè)以新聞內(nèi)容為主的網(wǎng)站。對(duì)于新聞網(wǎng)站來說,需求變化很快,互動(dòng)性也很高。于是,worldonline的三位工程師使用python開發(fā)了Django。Django特點(diǎn)Ridiculouslyfast,快Fullyloaded,全Reassuringlysecure,安全Exceedinglyscalable,可擴(kuò)展Incrediblyversatile,全能5.3Django安裝與使用Django安裝使用python的在線安裝,pipinstallDjango也可以在安裝時(shí)指定版本號(hào),如:安裝完成后,在Python安裝路徑下X:\Python27\Lib\site-packages\路徑下可以看到django文件夾。在X:\Python27\Scripts\路徑下可以看到django項(xiàng)目管理工具:django-admin5.3Django安裝與使用

在命令行下執(zhí)行django項(xiàng)目管理工具django-admin顯示如下信息,列表中顯示的是支持的命令5.3Django安裝與使用

在IDE中創(chuàng)建django工程、django應(yīng)用等也是執(zhí)行的django-admin對(duì)應(yīng)的命令例如:django-adminstartproject命令用于創(chuàng)建django工程django-adminstartapp命令用于創(chuàng)建django應(yīng)用django-adminrunserver命令用于啟動(dòng)運(yùn)行當(dāng)前項(xiàng)目5.3Django安裝與使用

以使用PyCharmIDE為例創(chuàng)建第一個(gè)django項(xiàng)目5.3Django安裝與使用輸入項(xiàng)目名hellodjango,點(diǎn)擊創(chuàng)建后,進(jìn)入如下界面:5.3Django安裝與使用在菜單中選擇Run/Runhellodjango,快捷鍵shift+F10在下方信息窗口中可以看到服務(wù)器已運(yùn)行信息,訪問地址是:8000/5.3Django安裝與使用打開瀏覽器,輸入地址:8000/,出現(xiàn)如下頁面,說明django工程運(yùn)行成功5.3Django安裝與使用在當(dāng)前的hellodjango工程中創(chuàng)建第一個(gè)app,操作步驟如下:執(zhí)行tools菜單下的runmanage.pytask命令5.3Django安裝與使用在當(dāng)前的hellodjango工程中創(chuàng)建第一個(gè)app,操作步驟如下:在下方會(huì)出現(xiàn)django項(xiàng)目管理命令輸入框在命令提示符后輸入startappdemo,創(chuàng)建名為demo的app5.3Django安裝與使用在當(dāng)前的hellodjango工程中創(chuàng)建第一個(gè)app,操作步驟如下:此時(shí)在項(xiàng)目瀏覽器里中可以看到新創(chuàng)建的demo,如下圖左所示:其中包含文件如下圖右所示。5.3Django安裝與使用打開hellodjango路徑下的urls.py文件在url(r‘^admin/’,include(admin.site.urls)),后面輸入url(r‘^$’,‘demo.views.indexpage’),如下圖所示:5.3Django安裝與使用打開demo路徑下的views.py文件在#Createyourviewshere.后面定義函數(shù)5.3Django安裝與使用打開demo路徑下的views.py文件HttpResponse會(huì)顯示紅色錯(cuò)誤,原因是沒有引入相關(guān)的包,在fromdjango.shortcutsimportrender后,輸入fromdjango.httpimportHttpResponse,如下圖所示:5.3Django安裝與使用在菜單中選擇Run/Runhellodjango,快捷鍵shift+F10在瀏覽器輸入:8000/5.3Django安裝與使用在demo路徑下的views.py文件中繼續(xù)添加函數(shù)defsum(request):

a=request.GET['a']

b=request.GET['b']

reshtml='''<h1>Thesumof%sand%sis%d</h1>'''

returnHttpResponse(reshtml%(a,b,int(a)+int(b)))5.3Django安裝與使用打開hellodjango路徑下的urls.py文件在url(r‘^$’,‘demo.views.indexpage’),后面輸入url(r‘^sum/’,‘demo.views.sum’),如下圖

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論