在Flask中,如何从表单数据生成动态URL?

时间:2018-12-11 22:55:31

标签: python flask

在html中,我有一个由三个单选按钮组成的表单

 <form action="{{ url_for('handle_data') }}" method="post">   
     <input type="radio" name="option" value="banana"> Banana<br>
     <input type="radio" name="option" value="apple">apple<br>
     <input type="radio" name="option" value="peach"> peach<br>
     <input type="submit" value="Submit Text">
 </form>

在我的app.py中,我为此定义了方法:

    @app.route('/result/<fruit>', methods=['POST'])
    def handle_data(fruit):
        fruit = request.form['option']
        return render_template("result.html",fruit = fruit)

我想做的是从当前的html文件重定向到新的URL,新的URL与我单击的单选按钮相对应。例如,如果我单击“苹果”并单击“提交文本”按钮,我将被重定向到“ /结果/苹果”。

我按照上面的方法进行操作,这给了我一个服务器错误。在这种情况下我做错了什么?

1 个答案:

答案 0 :(得分:0)

动态网址 OR 都可以解析表单数据,您无需同时执行这两项操作。在这种情况下,我将只使用结果URL,而不使用动态URL,因为您的模板期望url_for中的动态URL完成。您仍然可以使用动态URL,但是我相信您需要在单击“提交”按钮时添加一些JavaScript来填充URL。由于模板是在您选择水果之前呈现的,因此它不知道在URL的末尾传递水果,因此,如果您提交苹果,您的请求将仅发送到/ result /而不是/ result / apple。 / p>

@app.route('/result',methods=['POST'])
def handle_data():
  fruit = request.form.get["option"]
  return render_template("result.html",fruit=fruit)