2014-09-04 162 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