如何在mod_python中访问查询参数("$_GET")?

4 投票
1 回答
2519 浏览
提问于 2025-04-21 01:39

我想知道怎么在一个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]

撰写回答