2013-07-15 33 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

相关问题