首页 > 解决方案 > 烧瓶应用程序路由中的可选参数以及必需参数

问题描述

我试图在 Flask 应用程序的一个路由中将一个可选参数与一个必需参数放在一起。但它不起作用。

from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/route1/', defaults = {'optional_para': "None"}) # or keyword None
@app.route('/route1/<string:optional_para>/<string:required_para>')
def myfunction(optional_para, required_para):
   if optional_para == "something":
       # return this
   else:
       # return this

if __name__ == '__main__':
    app.run(threaded=True, debug=True, use_reloader=False)

它给了我一些 jsondecode 错误和服务器上的 404。我想如果我只使用必需参数或可选参数中的一个来做同样的事情......那么代码就可以正常工作。我的工作需要我同时使用它们。请帮帮我。

标签: pythonapiflask

解决方案


我认为,如果您使用request.args.get以下示例中的其他参数来考虑其他参数,那将很容易

from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/route1/<required_para>')
def myfunction(required_para):

   optional_para=request.args.get('optional_para', 'somthing_else', type=str)

   if optional_para == "something":
       # return this
   else:
       # return this

if __name__ == '__main__':
    app.run(threaded=True, debug=True, use_reloader=False)

您可以调用该函数以从其他视图函数返回

return redirect(url_for('myfunction',required_para='anything',optional_para='something'))

或通过html:

<a href="{{ url_for('myfunction',required_para='anything',optional_para='something')}}">
click me
</a>

或直接在网址中

http://hostname:prot/route1/'anything?optional_para='something'

推荐阅读