表单提交时,Python cgi.FieldStorage()为空

时间:2014-04-16 19:16:54

标签: python apache2 cgi

我在Apache 2虚拟主机配置中有以下指令:

<Directory /var/www/foo_test>
  Options MultiViews +ExecCGI
  AddHandler cgi-script .py
  AllowOverride All 
</Directory>

我有以下简单格式HTML:

<html>
  <body>
    <form action="foo.py" method="post" id="foo_form">
      <input type="text" id="foo" />
      <input type="submit" />
    </form>
  </body>
</html>

这是foo.py,提交表单时调用的可执行脚本:

#!/usr/bin/env python

import cgi
arguments = cgi.FieldStorage()

print "Content-Type: text/html\n"
print repr(arguments)

当我提交表单时,我收到以下回复:

FieldStorage(None, None, [])

FieldStorage对象实例中没有任何内容包含foo_form形式中指定的字段的值。

如果我用Perl脚本及其CGI模块替换Python脚本,同时更改Apache指令以处理Perl CGI,我可以从表单中读取字段。这告诉我,我的Apache设置没问题。

但是,我是否遗漏了实例化cgi.FieldStorage()对象或我的Apache设置的原因,导致表单提交失败?

1 个答案:

答案 0 :(得分:2)

如果您希望在表单中提交数据,则需要为输入提供name属性。