2012-01-06 41 views
1

最近我開始閱讀Mark Lutz的「Programming Python - Fourth Edition」。我是一個mac用戶,使用ActivePython和OSX 10.6.7。無論如何,一切都很順利,直到本書中的CGI的第一例。該代碼示例創建一個表單,並使用POST方法查找某人的名字:Python CGI不能在Mac OSX上執行10.6.7

<html> 
<title>Interactive Page</title> 
<body> 
<form method=POST action="cgi-bin/testing.cgi"> 
    <p><b>Enter your name:</b> 
    <p><input type="text" name="user"> 
    <p><input type="submit"> 
</form> 
</body> 
</html> 

的CGI腳本,然後放入一個子目錄,如在HTML,看起來像這樣:

#!/usr/bin/python 
import cgi 
form = cgi.FieldStorage() 
print("Content-type: text/html\n") 
print("<title>Reply Page</title>" 
if not 'user' in form: 
    print("<h1>Who are you?</h1>") 
else: 
    print("<h1>Hello <i>%s</i>!</h1>" % cgi.escape(form['user'].value)) 

但是,當我加載html並運行測試時,腳本不會執行。所發生的是瀏覽器將整個腳本作爲超文本加載,或者我下載了一個.py文件;取決於我使用的瀏覽器(Eclipse和Safari顯示文本,Chrome和Firefox下載文件)。如果它意味着什麼,當我打開.html文件時,它將使用file://而不是http://打開。

我不確定這可能是我的腳本或其他各種問題。 如果任何人有任何建議,在Mac上執行基於python的CGI將是偉大的。

+0

這是服務器配置問題,而不是編程問題。你的Apache httpd.conf是什麼樣的?例如,你是否遵循http://webpython.codepoint.net/mod_python_publisher_apache_configuration(我假設ActivePython附帶mod_python)。 – kindall 2012-01-06 00:32:34

回答

2

您需要配置並運行網絡服務器,然後通過該網絡服務器以http://localhost:8080/cgi/foo.py之類的URL訪問文件,而不是文件的本地路徑。

+1

我使用OS和sys配置了一個web服務器;現在事情正在流行。謝謝。另外,事實證明cgi.escape已經重新格式化爲py3.2中的html.escape。 – Bry6n 2012-01-06 02:03:34