2012-01-06 36 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