我正试图从Flask的url中获取多个参数。看完this SO answer后,我想我可以这样做:
@app.route('/api/v1/getQ/', methods=['GET'])
def getQ(request):
print request.args.get('a')
print request.args.get('b')
return "lalala"
但是当我访问/api/v1/getQ/a=1&b=2
时,我得到TypeError: getQ() takes exactly 1 argument (0 given)
。我尝试了其他网址,例如/api/v1/getQ/?a=1&b=2
和/api/v1/getQ?a=1&b=2
,但无济于事。
有人知道我在这里做错了什么吗?欢迎所有提示!
答案 0 :(得分:14)
您误读了错误消息;例外情况是关于如何使用 python 参数调用getQ
,而不是为调用视图添加了多少个URL参数。
Flask视图不会将request
作为函数参数,而是将其用作全局上下文。从函数签名中删除request
:
from flask import request
@app.route('/api/v1/getQ/', methods=['GET'])
def getQ():
print request.args.get('a')
print request.args.get('b')
return "lalala"
您访问网址参数的语法完全正确。请注意,methods=['GET']
是路由的默认值,您可以将其关闭。
答案 1 :(得分:3)
您可以尝试从Flask中的网址获取多个参数:
--- 卷曲请求 ---
curl -i "localhost:5000/api/foo/?a=hello&b=world"
--- 烧瓶服务器 ---
from flask import Flask, request
app = Flask(__name__)
@app.route('/api/foo/', methods=['GET'])
def foo():
bar = request.args.to_dict()
print bar
return 'success', 200
if __name__ == '__main__':
app.run(debug=True)
--- 打印栏 ---
{'a': u'hello', 'b': u'world'}
P.S。不要使用curl选项省略双引号(""),或者它不适用于Linux cuz"&"