一、什麼是CGI?
CGI(通用網關介面)是Web伺服器與應用程序之間的一種介面標準,它允許在伺服器上運行的程序與Web伺服器進行通信,從而實現基本的Web交互功能。在Python中,CGI模塊提供了CGI編程所需的所有函數和方法。
要使用CGI模塊,需要在web伺服器的配置文件中進行相關配置。Apache伺服器的主配置文件httpd.conf中可以使用以下指令配置CGI:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/ <Directory "/var/www/cgi-bin/"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Require all granted </Directory>
上述指令的含義是,指定CGI腳本的存放目錄為/var/www/cgi-bin/,並配置該目錄中所有文件的執行許可權。
二、CGI腳本的編寫
CGI腳本可以使用各種編程語言編寫,包括Python。要編寫Python的CGI腳本,需要在文件的開頭添加以下內容:
#!/usr/bin/python # -*- coding: utf-8 -*- import cgi import cgitb cgitb.enable()
這段代碼中,第一行指定使用Python解釋器來執行該腳本,第二行指定文件編碼為utf-8,第三行導入cgi模塊,第四行導入cgitb模塊,並調用enable()方法開啟CGI腳本的調試模式。
接下來,就可以使用Python編寫CGI腳本的具體功能了。例如,下面的代碼展示了如何將表單中提交的數據進行處理並返回頁面:
#!/usr/bin/python # -*- coding: utf-8 -*- import cgi import cgitb cgitb.enable() form = cgi.FieldStorage() name = form.getvalue('name') age = form.getvalue('age') print "Content-type: text/html\n" print "" print "Python CGI " print "" print "Name: ", name print "
" print "Age: ", age print "" print ""
上述代碼中,首先使用cgi模塊的FieldStorage()方法獲取表單數據,並分別賦給兩個變數。然後,使用print函數輸出響應頭信息和HTML頁面的代碼,包括表單的提交結果。
三、在Web伺服器上運行CGI腳本
將編寫好的CGI腳本保存為.py文件,並將文件放在web伺服器的CGI目錄下,一般情況下是在/var/www/cgi-bin/目錄下。然後,通過Web瀏覽器訪問該腳本的URL地址即可。
例如,如果某台Web伺服器的IP地址是192.168.0.1,那麼保存的CGI腳本文件名為test.py,那麼它的訪問地址就是http://192.168.0.1/cgi-bin/test.py。
四、使用Python內置的HTTP伺服器進行測試
為了方便測試CGI腳本程序,Python標準庫提供了BaseHTTPServer模塊,可以使用該模塊提供的HTTP伺服器進行本地測試。
例如,下面是一個測試腳本的示例:
import BaseHTTPServer import CGIHTTPServer import cgitb; cgitb.enable() PORT = 8000 server = BaseHTTPServer.HTTPServer handler = CGIHTTPServer.CGIHTTPRequestHandler server_address = ("", PORT) handler.cgi_directories = ["/cgi-bin"] httpd = server(server_address, handler) print "Starting CGI server on port: %s" % PORT httpd.serve_forever()
在終端窗口中運行上述代碼,並在瀏覽器中訪問http://localhost:8000/cgi-bin/test.py即可測試CGI腳本程序。
原創文章,作者:XYRA,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/136010.html