首页 > 解决方案 > 允许在 Flask URL 中使用多个可选参数

问题描述

所以我有一个烧瓶 URL,其中有 2 个单独的参数。我想运行相同的函数,没有参数,只有第一个或两者都有。如果没有设置特定值,我希望下落不明的参数能够获得价值None(而不是根本不存在)。我目前的解决方案涉及使用 3 个@app.route语句,我想知道是否有更有效的东西我错过了。

@app.route('/URL',defaults={'Arg1':None,'Arg2':None})
@app.route('/URL/<string:Arg1>',defaults={'Arg2':None})
@app.route('/URL/<string:Arg1>/<string:Arg2>')

谢谢!

标签: pythonflask

解决方案


在这种情况下,只需创建简单的路由并request.args像这样访问这些变量:

@app.route('/test', methods=['GET'])
def test():
    arg1 = request.args.get('arg1', None)
    arg2 = request.args.get('arg2', None)
    if arg1:
        pass  # Do something with it
    elif arg2:
        pass  # Do something with it
    else:
        pass  # do something when no args given
    return jsonify()

然后在 url 中你可以这样传递:

/test
or
/test?arg2=321
or
/test?arg1=123
or
/test?arg1=123&arg2=321

推荐阅读