由于接觸到Python Web開(kāi)發(fā),正好把最簡(jiǎn)單的CGI方式研究了一下,話說(shuō)在Windows下配置Python的Web開(kāi)發(fā)還真的蠻麻煩的,Linux下配置倒挺容易,正好微軟有技術(shù)文章《Using Python Scripts with IIS》介紹了這些內(nèi)容,此文介紹了兩種方法,一是使用ASP引擎來(lái)運(yùn)行Python腳本,這個(gè)可能需要用到ActivePython,當(dāng)然ASP技術(shù)已經(jīng)過(guò)時(shí)了,我今天就簡(jiǎn)單介紹下CGI模塊運(yùn)行方式。
編寫(xiě)簡(jiǎn)單的支持CGI的Python腳本(本文介紹3.2版本的Python):
print("Status: 200 OK") print("Content-type: text/html") print() # 打印一行空白行,用于分隔HTTP Header和正文 print("<h1>Hello World!</h1>")
這樣就可以了,大家可以猜出CGI是將標(biāo)準(zhǔn)輸出流重新定向到HTTP輸出流來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)或者數(shù)據(jù)傳輸?shù)摹?/p>
當(dāng)然這個(gè)在IIS中是不能直接運(yùn)行的,我們需要配置一下,打開(kāi)Internet 信息服務(wù)(IIS)管理器界面,選擇“處理程序映射”。
在接下來(lái)出現(xiàn)的界面右側(cè)選擇“添加模塊映射”。
IIS7添加模塊映射
假設(shè)我們的Python 3.2安裝于C:Python32,那么可以向下圖這樣填寫(xiě):
然后點(diǎn)擊確定,在接下來(lái)出現(xiàn)的對(duì)話框選擇“是”。
好了,我們的配置完成了,重啟一下IIS,然后趕快試試剛才的代碼吧。可能有人會(huì)抱怨,用CGI編寫(xiě)網(wǎng)頁(yè)一旦報(bào)錯(cuò)調(diào)試會(huì)比較麻煩,比如報(bào)下面的錯(cuò)誤:
HTTP 錯(cuò)誤 502.2 - Bad Gateway
指定的 CGI 應(yīng)用程序由于未返回完整的一組 HTTP 頭而產(chǎn)生錯(cuò)誤行為。它實(shí)際返回的頭是“Traceback (most recent call last): File "E:projects est.py", line 3, in <module> 1/0 ZeropisionError: pision by zero ”。
其實(shí)我們只需要在最開(kāi)始引入import cgitb; cgitb.enable()就可以了,就像下面這樣:
import cgitb; cgitb.enable() print("Status: 200 OK") print("Content-type: text/html") print() # 打印一行空白行,用于分隔HTTP Header和正文 print("<h1>Hello World!</h1>")
這樣一旦出錯(cuò),就會(huì)以友好的方式將錯(cuò)誤輸出來(lái)。
對(duì)于表單的處理,可以參考import cgi模塊(cgi.FieldStorage),網(wǎng)上有很多此方面的介紹,我就不多說(shuō)了,Enjoy it!
【相關(guān)推薦】
1. 詳解cgi向文本或者數(shù)據(jù)庫(kù)寫(xiě)入數(shù)據(jù)實(shí)例代碼
2. 什么是CGI?詳細(xì)介紹Python CGI編程
3. 使用CGI模塊建立簡(jiǎn)單web頁(yè)面教程實(shí)例
4. 分享一個(gè)PythonCGI編程的實(shí)例教程
5. 詳解XML與現(xiàn)代CGI應(yīng)用程序的示例代碼
6. FastCGI 進(jìn)程意外退出造成500錯(cuò)誤
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com