【问题标题】:Python Bottle how to read request parametersPython Bottle如何读取请求参数
【发布时间】:2012-07-25 03:34:53
【问题描述】:

我正在使用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>

这是生成的 URL:

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

在服务器端(瓶):

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

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

【问题讨论】:

  • 将数组表示法与表单名称一起使用不是更合适吗,例如:。跨度>

标签: python bottle http-request


【解决方案1】:

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

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

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....

【讨论】:

    【解决方案2】:

    请改用request.query.getall method

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 2019-06-14
      • 2011-09-28
      相关资源
      最近更新 更多