2013-07-15 32 views
0

我試圖訪問python腳本中的查詢字符串:在bash中,我會使用${QUERY_STRING}環境變量訪問它。如何訪問Python CGI腳本中的URL查詢字符串?

我碰到過這樣的事情:https://stackoverflow.com/a/2764822/32836,但這個劇本,由Apache2的運行:

#!/usr/bin/python 

print self.request.query_string 

打印什麼,在命令行中,同樣會產生這個錯誤:

$ ./testing.py 
Traceback (most recent call last): 
    File "./testing.py", line 3, in <module> 
    print self.request.query_string 
NameError: name 'self' is not defined 

如何閱讀query_string

+0

http://stackoverflow.com/questions/2709821/python-self-explained – cianius

回答

3

首先,「自我」關鍵字只有在一個函數(通常是一個對象)中定義後纔可用。它通常以與其他OOP語言中使用的'this'相同的方式使用。

現在,您嘗試使用的代碼段僅用於您尚未導入(也未安裝,我假設)的Google App Engine。既然你習慣使用環境變量,這裏是你可以做什麼:

#!/usr/bin/python 
import os 

print os.environ.get("QUERY_STRING", "No Query String in url") 

不過,我會建議你使用CGI模塊來代替。瞭解更多關於在這裏:​​http://docs.python.org/2/library/cgi.html

+0

目前該鏈接是保存值:

從上面的教程

再次破碎。感謝您解釋示例中「自我」的含義。 – Jamie

3

就像如果你正在運行CGI腳本的另一種方法來增加訪問QUERY_STRING值,你可以只做到以下幾點:

import os 
print "content-type: text/html\n" # so we can print to the webpage 
print os.environ['QUERY_STRING'] 

我的測試和理解這是否也適用於URL中沒有任何查詢字符串的情況,您只需獲得一個空字符串即可。

這被證實是工作在2.7.6,查看所有環境變量,像這樣:從一個TutorialsPoint tutorial上與Python的CGI編程獲得

#!/usr/bin/python 

import os 

print "Content-type: text/html\r\n\r\n"; 
print "<font size=+1>Environment</font><\br>"; 
for param in os.environ.keys(): 
    print "<b>%20s</b>: %s<\br>" % (param, os.environ[param]) 

的這段代碼。

雖然,如前所述zombie_raptor_jesus,它可能會更好使用Python的CGI模塊,用的FieldStorage使事情變得更容易。

# Import modules for CGI handling 
import cgi, cgitb 

# Create instance of FieldStorage 
form = cgi.FieldStorage() 

# Get data from fields 
first_name = form.getvalue('first_name') 
last_name = form.getvalue('last_name') 

將從查詢字符串first_name=Bobby&last_name=Ray

+0

最後,我最終走了'cgi'路線,因爲它也提供了'GET'和'POST'形式方法之間的抽象/絕緣。 – Jamie

+0

@Jamie yep,以爲我會在這裏記錄我的發現,因爲在處理CGI的時候我也發現了這個問題!完全看到這是2013年的問題哈哈 – matrixanomaly

相關問題