使用 Flask 和 WTForms 链接表单时出现问题



我正在尝试设置一个基于用户输入运行方法的 Web 应用程序。第一页获取图像和图像数量,并用它们运行一种方法,然后将用户发送到下一个表单,这是一个确认他们已经在应用程序之外完成任务的构象按钮。但是,当按下确认按钮时,用户将被重定向到第一页,其中显示他们需要在表单中输入信息,即使之前已填写

@app.route("/", methods=['GET', 'POST'])
def Home():
    form = SelectImageForm()
    if form.validate_on_submit():
        Label_Required = form.ImageLabel.data
        Amount_Required = form.Amount.data
        Cloud_Transfer(form.ImageLabel.data, form.Amount.data)
        flash(f'Searching Labels for {form.ImageLabel.data}!', 'success')
        form = SelectXMLConversion()
        return Stage2()
    return render_template('home.html', title = 'Label Selection', form=form )
@app.route('/stage2', methods=['GET','POST'])
def Stage2():
    form =  SelectXMLConversion()
    if form.validate_on_submit():
        return render_template('stage2.html', title ='Label Selection', form=form)

if __name__ == '__main__':
    app.run(debug='true')

目前,预计只是重新加载第 2 阶段页面,但它将它们发送回第一页,提示他们填写必填字段

不要return Stage2()

from flask import redirect, url_for
def home():
form = SelectImageForm()
if form.validate_on_submit():
    Label_Required = form.ImageLabel.data
    Amount_Required = form.Amount.data
    Cloud_Transfer(form.ImageLabel.data, form.Amount.data)
    flash(f'Searching Labels for {form.ImageLabel.data}!', 'success')
    form = SelectXMLConversion()
    return redirect(url_for('stage2'))
return render_template('home.html', title = 'Label Selection', form=form )

此外,路由定义应该是函数,应该是小写的,如 def home()def stage2() 。 我相信label_requiredamount_required也是变量,也应该是小写的。您可能想查看 Python 中的命名约定。

最后,按原样,stage2()路由将失败。 除非表单经过验证,否则不会返回模板。 据推测,您希望人们首先在这条路线上填写表格,在这种情况下,您必须在该if form.validate_on_submit():条件之外return

最新更新