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框询问我是否要在Xcode中打开./file.py
。
我怀疑我必须在中间CGI脚本的某个地方调用./file.py
,但我已经在网上搜索过,找不到任何关于如何操作的例子或解释。
在上下文中,我没有运行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
。
答案 0 :(得分:1)
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)