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-hk/n/239734.html
微信掃一掃
支付寶掃一掃