OS X 10.7.5、Python 2.7、Firefox 28.0
我有一个捕获四个参数的 HTML 表单。
我有一个带有四个命令行参数的 Python 文件。
我想要的是当我点击表单上的“提交”按钮时,使用四个参数调用 Python 文件,就像我在命令行上完成的一样:
vmsmith$ ./file.py arg1 arg2 arg3 arg4
我天真地尝试在 <form ... action="./file.py">
中引用 Python 文件, 但我有一个 Firefox 框问我是否要打开 ./file.py
在 Xcode 中。
我怀疑我必须调用 ./file.py
在中间 CGI 脚本中的某处,但我已经搜索了网络,但找不到任何示例或说明如何执行此操作。
在上下文中,我没有运行 Apache;相反,我正在运行我在这里找到的一个简单的 Python CGI 服务器:http://pointlessprogramming.wordpress.com/2011/02/13/python-cgi-tutorial-1/ .我用 HTML 表单运行了一些简单的 CGI 脚本,并验证了服务器、HTML 文件和 CGI 脚本都可以正常工作。
具体来说,给定一个包含四个输入字段的 HTML 表单,以下 CGI 脚本有效:
#!/usr/local/bin/python
import cgi
import cgitb
cgitb.enable()
form = cgi.FieldStorage()
val1 = form.getvalue('arg1')
val2 = form.getvalue('arg2')
val3 = form.getvalue('arg3')
val4 = form.getvalue('arg4')
我可以在网页上打印所有四个传递的值,但同样,我的想法是调用 file.py
和他们在一起。
请您参考如下方法:
1) file.py 可以变成 CGI 脚本,例如通过将 CGI 脚本代码与 file.py 中使用变量 val1 val2 val3 和 val4 执行某些操作的部分相结合。那么<form ... action="./file.py">
将工作,但您将无法以通常的方式在命令行上使用参数运行 file.py。
2) 或者,file.py 可以保持不变并从您的 CGI 脚本中调用,如下所示:
import os
os.system('python file.py' + ' ' + val1 + ' ' + val2 + ' ' + val3 + ' ' + val4)