CGI(Common Gateway Interface)是指URL與web伺服器之間的介面,CGI程序可以被作為web伺服器的一部分來執行,通過用戶的請求生成動態的web頁面。Python作為一門腳本語言,可以輕鬆地編寫CGI程序,並通過生成動態網頁來提供交互性的網站。
一、CGI基礎知識
1. CGI是什麼?
CGI是一種通用的介面,它使得Web伺服器可以調用其他程序來處理Web請求。當Web瀏覽器請求訪問Web頁面時,Web伺服器會把CGI程序看做是一款普通的可執行文件,運行該程序並將生成的結果返回給Web瀏覽器。
2. 如何使用CGI實現動態網頁?
通過編寫CGI程序,可以處理表單數據、資料庫操作、文件上傳等多種任務。CGI程序通常與Web伺服器一起創建,當有用戶請求訪問Web頁面時,Web伺服器會發送CGI請求到指定的伺服器地址,在伺服器上運行CGI程序,並將結果發送回Web瀏覽器。
3. CGI是如何運作的?
當Web瀏覽器請求訪問Web頁面時,Web伺服器會收到該請求並把它作為參數傳遞給CGI程序。CGI程序會將請求的信息解析成環境變數(如HTTP_COOKIE、QUERY_STRING等),通過標準輸入接收請求的數據,並通過標準輸出返回生成的網頁。返回的網頁數據會由Web伺服器發送給Web瀏覽器。
二、Python CGI基礎應用
1. 生成HTML頁面
Python提供了CGI模塊,用於生成HTML頁面。CGI模塊包含一個CGI類,該類可以處理請求並返回動態HTML頁面。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi # 創建CGI對象 form = cgi.FieldStorage() # 獲取表單參數 name = form.getvalue('name') # 返回HTML頁面 print("Content-type:text/html") print() print("") print("") print("Hello Word - Python CGI ") print("") print("") print("Hello %s
" % (name)) print("") print("")
該程序通過獲取表單參數並返回HTML頁面,向用戶打招呼。在瀏覽器中輸入網頁地址,即可看到效果。代碼中的print語句會將對應的HTML標籤輸出到瀏覽器上。
2. 顯示系統信息
使用Python CGI還可以顯示系統信息。Python自帶的platform模塊包含了獲取系統信息的函數,在CGI中可以利用該模塊來獲取系統信息並返回HTML頁面。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi import platform # 返回HTML頁面 print("Content-type:text/html") print() print("") print("") print("System Info - Python CGI ") print("") print("") print("System Info
") print("Processor: %s
" % (platform.processor())) print("Operating System: %s
" % (platform.system())) print("Python Version: %s
" % (platform.python_version())) print("") print("")
該程序通過platform模塊獲取系統信息並返回HTML頁面。在瀏覽器中輸入網頁地址,即可看到包含系統信息的頁面。
三、Python CGI進階應用
1. 利用CGI實現用戶登錄
通過CGI程序可以實現用戶登錄功能。用戶輸入用戶名和密碼,CGI程序驗證並返回登錄成功或失敗的信息。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi # 登錄用戶信息 users = [ {'name': 'user1', 'password': 'pwd1'}, {'name': 'user2', 'password': 'pwd2'}, {'name': 'user3', 'password': 'pwd3'} ] # 創建CGI對象 form = cgi.FieldStorage() # 獲取表單參數 name = form.getvalue('name') password = form.getvalue('password') # 查找用戶信息 user = None for u in users: if u['name'] == name and u['password'] == password: user = u # 返回登錄結果 print("Content-type:text/html") print() print("") print("") print("Login - Python CGI ") print("") print("") if user: print("Login successfully, welcome %s
" % (name)) else: print("Login failed, please check your name and password.
") print("") print("")
該程序實現了一個簡單的用戶登錄功能。在瀏覽器中輸入用戶名和密碼,CGI程序驗證用戶信息並返回登錄結果。
2. 利用CGI實現文件上傳
CGI還可以實現文件上傳功能。用戶選擇上傳的文件,CGI程序獲取並存儲文件。
#!/usr/bin/python # -*- coding: UTF-8 -*- import cgi import os # 創建CGI對象 form = cgi.FieldStorage() # 保存文件 fileitem = form['filename'] if fileitem.filename: fn = os.path.basename(fileitem.filename) open('/tmp/' + fn, 'wb').write(fileitem.file.read()) # 返回結果 print("Content-type:text/html") print() print("") print("") print("File Upload - Python CGI ") print("") print("") if fileitem.filename: print("The file %s is uploaded successfully.
" % (fn)) else: print("No file is uploaded.
") print("") print("")
該程序實現了文件上傳功能。在瀏覽器中選擇文件並上傳,CGI程序獲取並存儲文件,並返回上傳結果。
四、總結
Python CGI作為一種生成動態網頁的技術,可以通過多種方式來實現用戶交互和數據處理。通過本文的介紹,讀者可以了解到Python CGI的基本原理和使用方法,並可以嘗試編寫自己的CGI程序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239734.html