【问题标题】:How do I get all the query string params from a request?如何从请求中获取所有查询字符串参数?
【发布时间】:2021-03-23 05:31:35
【问题描述】:

我已经设置了一个不会暴露给外界的简单 gevent wsgi 服务器。我正在尝试获取所有查询字符串参数,但只能获取第一个:

from gevent.pywsgi import WSGIServer
from cgi import parse_qs
...
...
d = parse_qs(env.get('QUERY_STRING',''))
print d

curl localhost:5000?goat=pig&piano=guitar 打印:

{'goat': ['pig']}

如何获取所有参数:

{'goat': ['pig'], 'piano': ['guitar']}

【问题讨论】:

    标签: python wsgi gevent


    【解决方案1】:

    对于此类实用程序,您确实应该使用像 Bottle 或 Flask 这样的 Web 框架。原因是它们是为此目的而设计的,并为您处理请求标头和 JSON 等内容。

    from bottle import route, request, response, template
    @route('/forum')
    def display_forum():
        forum_id = request.query.id
        page = request.query.page or '1'
        return template('Forum ID: {{id}} (page {{page}})', id=forum_id, page=page)
    

    https://bottlepy.org/docs/dev/tutorial.html

    【讨论】:

    • 我确实有烧瓶,但一直收到“破管”错误。解决方案是使用 gevent:stackoverflow.com/questions/37962925/…。现在我不知道该怎么办了。
    • 就像我说的那样,这不会暴露给外界,也不会有并发请求 - 一次只有一个,但 Flask 每隔一个请求就一直给我那个坏管道错误。
    • 我会使用瓶子和 gevent。 Bottle 有一个适配器可以正确启动 gevent,所以只需使用它。 Bottle 还可以轻松地将 url 路由用作变量。我会花一个小时阅读文档。它是您正在做的事情的完美工具。
    猜你喜欢
    • 2020-03-01
    • 2012-02-07
    • 2013-09-29
    • 2019-05-12
    • 2014-09-06
    • 1970-01-01
    • 2020-05-16
    • 2017-12-09
    相关资源
    最近更新 更多