这是我尝试访问的数据,来自guessAnswer.py:
#!/usr/bin/python
print 'content-type: text/html'
print
import cgi
import cgitb; cgitb.enable()
userAnswer = cgi.FieldStorage()
userAnswer['userAnswer'].value
基本上,我从file1.py打印HTML,并在服务器上成功读取。
print '''<br> <form action='guessAnswer.py'>
<input name="userAnswer">
</form>
</b> </center> </h2>'''
但是,我似乎无法从guessAnswer.py获取用户输入的数据,因为file1.py是一个python文件。
如何访问用户数据呢?或者这个代码是否正常,我的程序的其他部分是导致问题的?
当我在命令提示符下运行文件时,在错误结束时,我得到:
Traceback (most recent call last):
File "guessAnswer.py", line 115, in <module>
print '<center> <h1> Your guess is <b> ' + guessTestTakers(hw22.someHighSchool, userInput['userAnswer'].value) + '</b>
t;/h1> </center>'
File "C:\Python27\lib\cgi.py", line 540, in __getitem__
raise KeyError, key
KeyError: 'userAnswer'
答案 0 :(得分:1)
至少在使用命令提示符运行它时,您知道guessAnswer.py正在运行(因为它在该文件中出错)。你知道它是否在你使用浏览器运行时运行?在guessAnswer.py上为所有用户设置执行(和读取?)权限。确保找到它的路径;也许在1.py中插入指向guessAnswer.py的显式路径或整个URL,至少作为测试。
考虑将guessAnswer.py导入1.py. (我不确定这是否有效。)您需要设置路径(UNIX中的PYTHONPATH)以确保可以找到它。
见cgi。注意&#34;常见问题和解决方案&#34;底部附近;例如:&#34;大多数HTTP服务器缓冲CGI脚本的输出,直到脚本完成。这意味着在脚本运行时无法在客户端显示器上显示进度报告。&#34;
或者这可能是问题所在:&#34;包含空字符串的表单字段将被忽略,并且不会出现在字典中;保留这些值,在创建FieldStorage实例时为可选的keep_blank_values关键字参数提供真值。&#34;也就是说,您可以将其更改为userAnswer = cgi.FieldStorage(keep_blank_values=True)
尝试插入类似&#34的提示;请输入您的猜测:&#34;在表单标签内,例如&#34;名字:&#34;在此示例中:http://www.w3schools.com/tags/att_form_action.asp您是否在使用浏览器运行时看到了提示?
使用浏览器运行时会发生什么?你有机会输入数据吗?你到底看到了什么?什么是错误消息或其他结果,让您知道您的脚本没有看到数据?
请详细说明当您说“内部服务器错误&#34;
时出现的错误消息。”[我之前说的是:请澄清一下。用户是否正在运行浏览器? guessAnswer.py是你正在运行的程序吗?浏览器是否导致该程序运行,如果是,如何运行?或者您是从命令行运行程序?第二组代码是否已经给出了1.py的内容?举例说明用户输入的内容。你看见什么了? (错误消息?空白网页?挂起的命令?)]