【问题标题】:Is it possible to get values from query string with same name?是否可以从具有相同名称的查询字符串中获取值?
【发布时间】:2014-06-04 06:33:27
【问题描述】:

我想知道是否可以从此查询字符串中获取值?

'?agencyID=1&agencyID=2&agencyID=3'  

为什么我必须使用这样的查询字符串?
我有一个包含 10 个复选框的表单。我的用户应该向我发送他/她感兴趣的新闻机构的 ID。以便查询字符串包含多个具有相同名称的值。新闻机构的总数是可变的,它们是从数据库中加载的。
我正在使用 Python Tornado 来解析查询字符串。

【问题讨论】:

    标签: python query-string tornado


    【解决方案1】:

    阅读the tornado docs,这似乎是你想要的

    RequestHandler.get_arguments(name, strip=True)

    返回一个列表 具有给定名称的参数。 如果参数不存在,则返回一个空列表。 返回的值始终是 unicode。

    就这样

    ids = self.get_arguments('agencyID')
    

    请注意,这里我使用了get_arguments,还有一个get_argument,但它只得到一个参数。


    你可以得到整个查询

    query = self.request.query
    

    【讨论】:

      【解决方案2】:
      >>> from urlparse import urlparse, parse_qs
      >>> url = '?agencyID=1&agencyID=2&agencyID=3' 
      >>> parse_qs(urlparse(url).query)
      {'agencyID': ['1', '2', '3']}
      

      【讨论】:

      • from urllib.parse import urlparse, parse_qsl for python3
      【解决方案3】:

      tornado.web.RequestHandler 有两种获取参数的方法:

      • get_argument(id),它将获取名称为“id”的最后一个参数。
      • get_arguments(id),它会将名称为“id”的所有参数放入一个列表中,即使只有一个。

      所以,也许 get_arguments 是你需要的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-30
        • 2017-11-22
        • 1970-01-01
        • 2019-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多