Python Bottle如何读取请求参数

时间:2012-07-26 14:10:28

标签: python bottle http-request

我正在使用http://dingyonglaw.github.com/bootstrap-multiselect-dropdown/#forms来显示包含多个复选框的下拉列表。

<li>
  <label>
    <input type="checkbox" name="filters" value="first value">
    <span>First Value</span>
  </label>
</li>

<li>
  <label>
    <input type="checkbox" name="filters" value="second value">
    <span>Second Value</span>
  </label>
</li>

这是结果网址:

http://example.com/search?filters=first+value&filters=second+value

在服务器端(瓶子):

terms = unicode (request.query.get ('filters', ''), "utf-8")

只会给我“第二个价值”并忽略“第一个价值”。有没有办法收集所有'过滤器'值?

2 个答案:

答案 0 :(得分:11)

改为使用request.query.getall method

  

FormsDict是MultiDict的子类,可以为每个键存储多个值。标准字典访问方法只返回单个值,但MultiDict.getall()方法返回特定键的所有值的(可能为空)列表。

答案 1 :(得分:0)

嘿,我遇到了同样的问题,并找出了解决方案

我将编写适用于您的问题的代码

HTML :(请注意,我在这里不是很熟练,所以可能有错误,但基本结构正确)。在这里,我们要设置一个“表单操作”并使用method = GET

<form action="/webpage_name" method="GET">
<li>
  <label>
    <input type="checkbox" name="filters" value="first value">
    <span>First Value</span>
  </label>
</li>
<li>
  <label>
    <input type="checkbox" name="filters" value="second value">
    <span>Second Value</span>
  </label>
</li>
<input type="submit" name="save" value="save">
</form> 

Python: 变量“ all_filters”将从“ filters”变量中获取所有数据 从瓶子进口请求中

@route('/webpage_name', method='GET')
def function_grab_filter():
    if request.GET.save:
        all_filters = request.GET.getall('filters')
        for ff in all_filters:
            fft = str(ff[0:]) # you might not need to do this but I had to when trying to get a number
            do soemthing....