使用GET方法

时间:2017-12-15 19:14:19

标签: python forms flask wtforms

我有两条路线:

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

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

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

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

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

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

问题是,当我在addstudents路由中使用form.validate()时,即使表单已经过验证,它也会将我重定向到students.html route.I希望以防表格未经验证显示错误activity.html。怎么可能?

我是新手,也许我的整个代码都是错误的,但概念是如果活动表格有效,我会被重定向到学生路线,如果没有错误将显示在活动路线中。 此外,我需要使用上一个表格的args在学生路线中提交表格。

1 个答案:

答案 0 :(得分:0)

例如,初始化表单时,您需要传递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'))

您需要从request导入flask对象。

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

要在提交表单时重定向到addstudents,请将属性action="{{ url_for('addstudents') }}"添加到<form>中的activity.html标记中。