Я пытаюсь поместить необязательный параметр вместе с обязательным параметром в один маршрут в приложении 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 на сервере. Я подумал, что если я сделаю то же самое только с одним из обязательных или необязательных параметров, тогда код будет работать нормально. Моя работа требует, чтобы я использовал их вместе. Пожалуйста, помогите мне.
Я попробовал это однажды, прежде чем опубликовать этот вопрос.. это не сработало.. но как-то теперь это сработало.. что здесь только что произошло..
Я думаю, будет легко, если вы учтете другие параметры, используя 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>
или непосредственно в URL как
http://hostname:prot/route1/'anything?optional_para='something'
Почему бы вам не попробовать сначала required_parameter, а затем необязательный?