2011-10-07 171 views
1

我想要做的是在cgi-bin中有一個單獨的python程序,它由站點上的多個頁面中的每一個執行,並在每個頁面上顯示一行HTML 這對每個文件都不同,但鍵入的網址爲 該網站上的文件。如何將變量傳遞給python cgi腳本

我知道如何使用JavaScript來獲取URL(例如,在 http://constitution.org/cs_event.htm):

<script language="javascript"> 
    var myurl = document.location.href; 
    document.write(myurl); 
</script> 
<br> 
<script language="javascript"> 
    var myurl = document.location.href; 
    document.write("<A href=\"" + myurl + "\">" + myurl + "<\/A>"); 
</script> 

而且我知道如何創建,打開一個頁面時一個點擊執行的.py 腳本的鏈接它:

<a href="http://constitution.org/cgi-bin/copy01.py?myurl=myurl">Here</a> 

這是迄今爲止python腳本:

#!/usr/bin/env python 
# This outputs a copyright notice to a web page 

import cgi 
print "Content-Type: text/html\n" 
form = cgi.FieldStorage() 

thisurl = form.getvalue("myurl") 

print """ 
<html><head></head> 
<body> 
""" 

print """ 
Copyright &copy; 1995-2011 Constitution Society. Permission granted to copy with attribution for non-profit purposes. 
""" 

print """ 
</body></html> 
""" 

print thisurl 

但是,如何將變量值傳遞給.py 腳本並不那麼明顯,並讓它自動顯示該頁面的URL,方式爲 javascript所執行的操作,或者顯示一行HTML,它將從 字典中的URL是鍵和HTML行是數據。最終,我希望能夠使用單個.py腳本, 生成每個頁面的所有頁腳內容,這些頁腳內容可以通過單個文件進行維護,我可以編輯這些文件以進行隨處傳播的更改。

+0

我找到了獲取調用頁面的URL的方法,可以用import os打印os.environ ['HTTP_REFERER'] –

+0

我們仍然沒有解決問題。我想要一些東西,比如jquery腳本,它執行的是一個python腳本,除了顯示一行根據調用HTML頁面的URL選擇的HTML之外,它們是每個URL的不同行。最初,它只能顯示URL,但最終的解決方案是使用URL作爲字典鍵來選擇該行作爲該字典的值。 –

回答

0

CGI將與當前請求有關的各種事情放到腳本的shell環境中,您可以通過os.environ以正常方式訪問該環境。特別是,os.environ['HTTP_HOST']會爲您指定服務器名稱,os.environ['SCRIPT_NAME']將爲您提供路徑。

+0

似乎得到了cgi腳本的環境變量,但不是嵌入了python腳本調用的html頁面的環境變量。我希望嵌入的調用能夠立即以同樣的方式在同一頁面上執行,就像JavaScript示例一樣,用戶不必點擊它。 –

+0

換句話說,我需要調用腳本的HTML頁面的URL,而不是腳本本身的URL。該腳本需要獲取調用HTML頁面的URL,將其用作字典鍵以獲取數據,該數據將是一行HTML,然後立即在調用HTML頁面中顯示該行,格式化爲好像它已經部分HTML,包含鏈接等 –

相關問題