【问题标题】:How to access a query parameter ("$_GET") in mod_python?如何在 mod_python 中访问查询参数(“$_GET”)?
【发布时间】:2014-09-11 09:16:43
【问题描述】:

我想知道如何在 python 脚本上显示请求 ($_GET)?

请注意,我使用mod_python 作为在 UBUNTU 服务器上运行 apache2 的基本 Web 服务器。

如果您有任何想法,我们将非常感谢您的帮助 :)

其他 python web 服务器,如 Django 等...在我的情况下需要注意,因为我只为特定任务运行一个 python 脚本:)

【问题讨论】:

  • 您是在使用任何 Web 框架,还是直接从 WSGI 软管中喝水?
  • 不,我不使用任何框架 :) 基本的 Python Web 服务器 :)
  • 那就开始使用吧。没有理由停留在那个低水平。从wiki.python.org/moin/WebFrameworks 中选择一个,尽管 Flask、Pyramid 和 Django 目前最流行,这取决于您的需要。
  • 对于没有数据库后端的特定简单任务,请使用 Flask。
  • 当然有,但为什么要经历那种痛苦呢?如果您坚持,请至少阅读WSGI tutorial

标签: python wsgi mod-python query-parameters


【解决方案1】:

对于响应网络请求的简单脚本,我不会使用mod_python;你可能想在这里切换到mod_wsgi

您必须自己解析QUERY_STRING WSGI 变量;您可以使用urlparse.parse_qs() function

from urlparse import parse_qs

def application(environ, start_response):
    params = parse_qs(environ['QUERY_STRING'])
    foo = params.get('foo', [None])[0]

parse_qs 解析出查询字符串并将结果字典中的值设置为每个键的 list,因为键可以在查询字符串中出现多次。

上面将选择列表中的第一个值,如果键根本不存在,则选择None

如果您要坚持使用普通的 WSGI,请阅读decent tutorial 以了解其工作原理。但是,我强烈建议您使用框架;即使只是 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]

【讨论】:

  • 谢谢,如何从外部字符串调用def application'foo'?
  • @user3818090: ick,你使用的是mod_python,而不是mod_wsgi。这些天来相当古老和过时..
  • 我刚刚按照你的建议安装了mod_wsgi
  • @user3818090:啊,那我回滚到另一个版本。 mod_wsgi 肯定是更好的选择,除非您想编写 Apache 过滤器或连接处理程序。
  • @user3818090:我的错误,我的意思是使用req(处理程序的参数)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 1970-01-01
  • 2013-08-04
相关资源
最近更新 更多