获取同名的多个请求参数

Joh*_*ang 41 python flask

我的问题是使用给定的代码:

from flask import Flask, request

app = Flask(__name__)

@app.route("/")
def hello():
    return str(request.values.get("param", "None"))

app.run(debug=True)
Run Code Online (Sandbox Code Playgroud)

我访问:

http://localhost:5000/?param=a&param=bbb
Run Code Online (Sandbox Code Playgroud)

我应该期待除了Flask之外的['a','bbb']的输出似乎只接受第一个参数并忽略其余参数.

这是Flask的限制吗?还是设计?

Ble*_*der 74

你可以使用getlist,类似于Django的,getList但由于某些原因在Flask文档中没有提到:

return str(request.args.getlist('param'))
Run Code Online (Sandbox Code Playgroud)

结果是:

[u'a', u'bbb']
Run Code Online (Sandbox Code Playgroud)

使用request.args如果参数是查询字符串(如题),request.form如果值来自具有相同名称的多个表单输入. request.values结合两者,但通常应该避免更具体的集合.

  • `request.values`是`CombinedMultiDict`的实例,`MultiDict`的子类,是Werkzeug的一部分.`getlist()`方法在其文档中描述:http://werkzeug.pocoo.org/docs/datastructures/#werkzeug.datastructures.MultiDict.getlist (4认同)