Python:如何从Flask中的URL获取多个变量?

时间:2014-02-15 11:08:55

标签: python url get request flask

我正试图从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,但无济于事。

有人知道我在这里做错了什么吗?欢迎所有提示!

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"&"

类似问题Multiple parameters in in Flask approute