此模組用於支援通用閘道器介面的指令碼。
這個模組定義了許多 cgi 指令碼工具
簡介:乙個 cgi 指令碼由 http 伺服器呼叫,通常用於處理通過 和 標記提交的使用者輸入。
大部分情況下,cgi 指令碼存放在伺服器端的 cgi-bin 目錄下,http 伺服器存放各種環境資訊,可以執行指令碼、並將指令碼的輸出返回給客戶端。
指令碼的輸入鏈結到客戶端,並且**資料也通過這種方式讀出。該模組的目的是相容不同的專案,為python 指令碼提供乙個簡單的介面,它也提供了許多用於除錯指令碼的工具。最新增加的功能是支援從乙個表單上傳檔案的功能(如果你的瀏覽器支援的話)。
cgi 指令碼的輸出應當由兩部分組成,由乙個空格分隔,第一部分包含了很多 http 頭(header),用於告訴客戶端之後的指令碼是什麼型別。我們用 python **生成乙個最小的 http 頭部內容如下:
print("content-type: text/html") # html is following
print() # blank line, end of headers
print("cgi script output")
print("")
print("hello, world!")
使用 cgi 模組
開始寫**之前先import
cgi
當你寫乙個新的指令碼之前,考慮加入以下內容:
import cgitb
cgitb.enable()
這將啟用乙個特殊的異常處理程式,如果存在任何錯誤,將在瀏覽器裡顯示詳細資訊。
如果不想顯示任何錯誤,你也可以將反饋儲存為檔案,而不在瀏覽器顯示。如下:
import cgitb
cgitb.enable(display=0, logdir="/path/to/logdir")
這一功能在指令碼開發過程中是非常有用的。通過 cgitb 生成的反饋資訊,可以為你節省大量的除錯時間。在確定指令碼可以正常工作後,可以隨時刪除cgitb
行。
為了得到表單提交的資料,應該使用 fieldstorage 類。如果表單包含非ascii 字元,可以設定 encoding 關鍵字的引數為文件設定編碼。它通常包含在 html 文字的 head 部分的 meta 標籤或由 content-type 頭資訊設定。它從標準輸入或環境變數中讀取表單內容。這可能會在標準輸入上耗費資源,所以應當只呼叫一次。
fieldstorage 例項像 python dict 那樣被索引,它支援使用 in 運算子進行成員測試,同時也支援標準的字典方法 keys() 和內建函式 len() 。如果表單字段包含空字串則會被忽略,並且不會出現在字典中。你也可以保留這些空值,當建立的 fieldstorage 例項時,將可選引數 keep_blank_values 設定為 true 即可。
舉個例子,下面的**(假設content-type 頭資訊已經打出)將檢查 name 和 addr 是否都被設成非空字串:
form = cgi.fieldstorage()
if "name" not in form or "addr" not in form:
print("")
print("please fill in the name and addr fields.")
return
print("name:", form["name"].value)
print("addr:", form["addr"].value)
...further form processing here...
...
...
。
pyhton3 類的繼承
在類的繼承中,已有的 設計好的類稱為父類或基類,新設計的類稱為子類或派生類。派生類可以繼承父類的公有成員,但是不能繼承其私有成員。類繼承的語法格式如下 class 派生類名 基類名 派生類成員在python中繼承有以下特點 在繼承中基類的建構函式 init 方法 不會自動呼叫,它需要在其派生類的構造...
pyhton3資料型別之list
list使用中括號建立,list中的元素可以存放任何型別的元素,元素之間用逗號隔開.list1 初始化乙個空list list2 a b c 初始化乙個list,有三個str型別的元素 list3 1,2,3,4 初始化乙個list,有四個int型別的元素 list3 a b c 1,2,3,4 初...
pyhton3資料型別之tuple
1 元組的建立 tup1 a b c d tup2 a b c d tup1和tup2的效果是相同的 tup3 建立乙個空元素 當初始化乙個只有乙個元素的元組,tup4 12 或者 tup4 12,或者 tup4 12,後面的逗號必須要 2 元組的特點 元組和list類似,具有索引,區別在於元組中的...