我正在尝试使用python cgi和webbrowser模块从html表单提交操作中打开一个url。我能够在localhost上启动url
python -m webbrowser -t "http://myhost.com/path/to/some/file.html"
然而
{c>脚本中的webbrowser.open(url, new=0, autoraise=True)
,apache提供空白页面,不会在页面上打印错误。我的firefox浏览器的位置框显示“http://myhost.com/my_script.cgi?Submit=Submit”而不是目标网址。
如果在这种情况下不能使用webbrowser模块,我会对它实际服务的目的感到困惑。如果我使用url作为表单操作,页面将被提供给客户端,但我的脚本需要处理先前html表单传递的变量以确定URL,然后将该URL提供给客户端。让我知道我错过了什么,谢谢。
答案 0 :(得分:0)
我很确定,是的,你会混淆webbrowser库应该做的事情。 如果在cgi中运行webbrowser命令,它将尝试在运行cgi脚本的服务器上打开webbrowser(就像运行cgi的用户一样)。这可能行不通。我认为你想要发生的是你的cgi脚本应该向浏览器返回适当的HTTP“命令”以使其重定向。举个例子:
if "Submit" in form:
url = "http://www.python.org #or do whatever processing is needed to calculate the new URL
print "Status: 302" #this tells the browser the result is a redirect
print "Location: " + url #this tells the browser where to redirect
print "" #send two new lines to end the HTTP header
请注意,如果您使用的是django或其他库(我希望即使只是cgi库计数),也可能有更高级别的方法来执行此操作,但这应该适用于任何地方。您也可以使用HTML等内容进行META-refresh。