1. 程式人生 > >Python(27)使用python的http,cgi模組實現一個簡單的web服務

Python(27)使用python的http,cgi模組實現一個簡單的web服務

CGI(Common Gateway Interface)即通用閘道器介面,按百度百科對其的解釋是:

CGI(Common Gateway Interface) 是WWW技術中最重要的技術之一,有著不可替代的重要地位。CGI是外部應用程式(CGI程式)與Web伺服器之間的介面標準,是在CGI程式和Web伺服器之間傳遞資訊的規程。CGI規範允許Web伺服器執行外部程式,並將它們的輸出傳送給Web瀏覽器,CGI將Web的一組簡單的靜態超媒體文件變成一個完整的新的互動式媒體。 
Common Gateway Interface,簡稱CGI。在物理上是一段程式,執行在伺服器上,提供同客戶端HTML頁面的介面。這樣說大概還不好理解。那麼我們看一個實際例子:現在的個人主頁上大部分都有一個留言本。留言本的工作是這樣的:先由使用者在客戶端輸入一些資訊,如名字之類的東西。接著使用者按一下“留言”(到目前為止工作都在客戶端),瀏覽器把這些資訊傳送到伺服器的CGI目錄下特定的cgi程式中,於是cgi程式在伺服器上按照預定的方法進行處理。在本例中就是把使用者提交的資訊存入指定的檔案中。然後cgi程式給客戶端傳送一個資訊,表示請求的任務已經結束。此時使用者在瀏覽器裡將看到“留言結束”的字樣。整個過程結束。

而Python的cgi模組定義了使用Python編寫CGI指令碼的實用工具!

結構目錄


index.html程式碼

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>http,cgi模組test</title>
</head>
<body>
	<form action="./cgi-bin/index.py" method="get">
		<label>使用者名稱: <input type="text" name="username"></label><br>
		密碼: <input type="password" name="password"><br>
	<!-- 	<input type="hidden" name="id" value="20"> -->
		<input type="submit">
	</form>
</body>
</html>

server.py程式碼

from http.server import HTTPServer, CGIHTTPRequestHandler  

#埠號
port = 8080  
#使用http.server模組開啟一個web服務
httpd = HTTPServer(('', port), CGIHTTPRequestHandler)  
print("Starting simple_httpd on port: " + str(httpd.server_port))  
httpd.serve_forever() 

index.py程式碼

import cgi,cgitb
cgitb.enable()

print("Content-Type: text/html")    # HTML is following
print()                             # blank line, end of headers  

#使用cgi獲取web form提交過來的資料
fs = cgi.FieldStorage()
inputs = {} 
#將cgi從web獲取到的資料存入字典inputs
for key in fs.keys():  
    inputs[key] = fs[key].value  
#for in 迴圈列印字典inputs中的資料
for k,v in inputs.items():
	print(k,'-->',v)
	print('<br/>')

使用步驟

①執行server.py開啟web服務



②使用瀏覽器訪問表單html頁面


③訪問index.py提交資料(使用者名稱wiz,密碼123)


④觀察命令列結果