2014-09-04 164 views
0

我目前正在编写一个CGI python脚本。一旦我有时间,我会在web2py里重写这个,但是根本没有时间ATM。Python CGI URL重定向

我已经构建了整个逻辑,除了一件事。我需要能够:

1)发送一个变量来启动一个进程(得到了它的工作原理)
2),直到一次过程完成这样的过程结束
3)显示信息刷新页面。

我似乎无法通过URL刷新部分,并剥离启动原始进程的变量。

我试过网页浏览器(webbrowser.open('http://example.com?running=1')),但是由于某种原因我没有在Mac上重定向。

if print_html.parse_url(): 
    url_variable=print_html.parse_url() 
    IP=url_variable['IP'].value 
    Iterations=int(url_variable['quantity'].value) 
    start=url_variable['start'].value 
    refresh=url_variable['refresh'].value 
if start == "1": 

正如你所看到的,我从URL读取变量并赋值。当start =='1'时,我想开始运行其余的程序。直到一切都处理完

一些更多的澄清,而程序运行时我想改变URL变量重新阅读的页面,这或许可以帮助: 我需要刷新页面,或者打开同一个网页,但具有不同的变量。

例如 1实例:http://example.com/test.py?start=1 逻辑运行,然后刷新产卵: 2ST例如:http://example.com/test.py?running=1

这是否有意义?

+0

我没有一个很好的答案,但我相信我尝试这样做,当我做到了我*有*打开一个新页面,或者从来没有正确重定向。纯python CGI是令人难以置信的挑剔。 – 2014-09-04 23:06:56

+0

'webbrowser'用于客户端功能。 – 2014-09-04 23:29:55

+0

请创建一个简单的,完整的CGI程序来演示您遇到的问题。将该短程序复制粘贴到您的问题中。 – 2014-09-05 00:09:43

回答

0

您可以使用HTML meta http-equiv指令刷新页面。

#!/usr/bin/python 
import datetime 
import time 

print "Content-Type: text/html" 
print "" 
print ''' 
<html> 
<head> 
<meta http-equiv="refresh" content="15" /> 
</head>''' 

now = datetime.datetime.now() 
now = now.isoformat() 

print ''' 
<body> 
The time is now %s 
</body>''' % now 
+0

或者,你知道,因为你自己输出标题,只需输出正确的标题。 – 2014-09-05 00:21:05

+0

是的,但我选择只提一种方法,以免浑水。 – 2014-09-05 00:28:14

+0

谢谢,但这不起作用。刷新也会刷新所有的变量,这意味着进程将重新初始化。 这里是一个剪断: \t如果print_html.parse_url(): \t \t url_variable = print_html.parse_url() \t \t IP = url_variable [ 'IP']值 \t \t迭代= INT(url_variable [ '量' ]。价值) \t \t开始= url_variable [ '开始']值 \t \t刷新= url_variable [ '刷新']值 \t如果开始== “1”:。 我由功能为我的HTTP标头,这确实需要刷新参数。在这种情况下,我想避免同一cgi页面的多个产卵。 – 2014-09-05 01:24:11