使用 GET 方法提交带有烧瓶 wtforms 的表单

geo*_*rge 2 python forms flask wtforms

我有 2 条路线:

@app.route('/activity', methods=["GET"])
def addactivity():
    return render_template('activity.html')
Run Code Online (Sandbox Code Playgroud)

在 acitvity.html 中,我有一个包含一些字段的表单,我想将此表单提交到另一条路线:

@app.route('/students', methods=["GET"])
def addstudents():
    return render_template('students.html')
Run Code Online (Sandbox Code Playgroud)

因此,当我在 acitivity.html 中提交表单时,我将被重定向到

/students?field1=value1&field2=value2 等等...

对于活动表单,我使用带有验证器的 wtforms:DataRequired() 或 InputRequired()

问题是,当我在 addtudents 路由中使用 form.validate() 时,即使表单已验证或未验证,它也会将我重定向到 student.html 路由。我想以防表单未验证以显示 activity.html 中的错误.这怎么可能?

我是 Flask 的新手,也许我的整个代码是错误的,但概念是,如果活动表单经过验证,我将被重定向到学生路线,否则将在活动路线中显示错误。此外,我需要提交学生路线中的表格与前一个表格的参数。

小智 5

您需要request.args在初始化表单时通过,例如

@app.route('/students')
def addstudents():
    form = Form(request.args)

    if form.validate():
        return render_template('students.html')

    # Redirect to addactivity if form is invalid
    return redirect(url_for('addactivity'))
Run Code Online (Sandbox Code Playgroud)

您将需要从 导入request对象flask

来源:https : //github.com/lepture/flask-wtf/issues/291

重定向到addstudents当表单提交,将该属性添加action="{{ url_for('addstudents') }}"<form>的标签activity.html