如何在mod_python中访问查询参数("$_GET")?
我想知道怎么在一个Python脚本中显示请求的内容($_GET
)?
请注意,我在使用mod_python
作为基本的网络服务器,它是在UBUNTU服务器上和apache2一起运行的。
如果你有任何想法,我会非常感激你的帮助 :)
其他的Python网络服务器,比如Django等等,在我的情况下不需要,因为我只运行一个Python脚本来完成特定的任务 :)
1 个回答
9
如果你想写一个简单的脚本来响应网页请求,我建议你不要使用 mod_python
;这里你可能更想用 mod_wsgi
。
你需要自己解析 QUERY_STRING
这个 WSGI 变量;你可以使用 urlparse.parse_qs()
函数 来做到这一点:
from urlparse import parse_qs
def application(environ, start_response):
params = parse_qs(environ['QUERY_STRING'])
foo = params.get('foo', [None])[0]
parse_qs
会解析查询字符串,并把结果放到一个字典里,每个键对应的值是一个 列表,因为在查询字符串中,键可能会出现多次。
上面的代码会取出列表中的第一个值,如果这个键根本不存在,就会返回 None
。
如果你打算继续使用普通的 WSGI,建议你看看一个 不错的教程,这样你能更好地理解它是怎么工作的。不过,我强烈建议你使用一个框架;即使是 Werkzeug 也能让你作为开发者的生活简单很多,即使只是写一个简单的脚本。
如果你决定继续使用 mod_python
的请求处理器,可以把 environ['QUERY_STRING']
替换成 request.args()
:
from urlparse import parse_qs
def requesthandler(req):
params = parse_qs(req.args)
foo = params.get('foo', [None])[0]