【发布时间】:2014-04-14 18:22:23
【问题描述】:
我已经用 apache web 服务器实现了 cgi python 脚本。 我有以下功能:
def check(form=None, key=''):
if form == None:
return -1
value = form.has_key(key)
if value == False:
return -1
return 0
这是我的标题:
“内容类型:文本/纯文本;charset=UTF-8”
但是当我运行它并且什么都不传递给表单时,显示了以下错误。
Python 脚本中出现问题。这里是顺序 导致错误的函数调用,按照它们发生的顺序。
而这一行value = form.has_key(key) 被标记为错误。
这是回溯,我看到 fieldStorage 没有创建字典来存储密钥:
/usr/lib/python2.7/cgi.py in has_key(self=FieldStorage(None, None, 'keyA=valA&keyB=valB&keyC=calC\x00\x00'), key='keyA') 587 """Dictionary style has_key() method.""" 588 if self.list is None: =>589 raise TypeError, "not indexable" 590 return any(item.name == key for item in self.list) 591 builtin TypeError = <type 'exceptions.TypeError'>: 不可索引 args = ('不可索引',) message = '不可索引'
我该如何解决这个问题。 谢谢。
【问题讨论】:
-
你能粘贴堆栈跟踪吗
-
/opt/lampp/htdocs/ConfirmPassword.fcgi in check_input_param(form=FieldStorage(None, None, 'CMD=ConfirmPasswordRequest&password=1234&poweroff=0\x00\x00'), cmd_key='CMD') 25 if form == None: 26 return -1 => 27 cmd_value = form.has_key(cmd_key) 28 if cmd_value == False: 29 return -1 cmd_value undefined, form = FieldStorage(None, None, 'CMD=ConfirmPasswordRequest&password=1234&poweroff =0\x00\x00'), form.has_key =
, cmd_key = 'CMD' -
您自己说的,您将 nothing 传递给
form。如果form为空,则无法访问form.has_key(key),因为它是无效/空对象。因此,错误。 -
为了提高可读性,您可以编辑您的问题 ;-)
-
现在我将 A=a&B=b&C=c 传入表单。但是发生了同样的错误。我也无法获得表格的长度。