是否可以从具有相同名称的查询字符串中获取值?

时间:2014-06-04 06:33:27

标签: python query-string tornado

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

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

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

3 个答案:

答案 0 :(得分:9)

阅读the tornado docs,这似乎可以做你想要的事情

  

RequestHandler.get_arguments(name,strip = True)

     

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

所以喜欢这个

ids = self.get_arguments('agencyID')

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


您可以使用

获取整个查询
query = self.request.query

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

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

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