Flask:在另一页上使用WTForm,而不是在另一页上呈现表单本身

时间:2018-09-01 23:20:52

标签: flask flask-wtforms flask-bootstrap

我有以下设置:

渲染页面:

@app.route('/one', methods=['GET'])
def one():
    form = AnyForm()
    return render_template(
        'form.html', form=form
    )

模板(剥离到基本模板):

{{ wtf.quick_form(form, action=url_for('two')) }}

包含逻辑的路线/功能

@app.route('/two', methods=['POST'])
def two(form):
    print('FORMDATA: ' + form)
    return redirect(url_for('one'))

错误是:

TypeError: two() missing 1 required positional argument: 'form'

我该如何处理?

1 个答案:

答案 0 :(得分:1)

您必须在functuin two上定义表单,并从该函数收到的发布请求中填充该表单,这样就无需获取任何参数

尝试一下:

@app.route('/two', methods=['POST'])
def two():
    form = AnyForm(request.form)
    print('FORMDATA: ' + form)
    return redirect(url_for('one'))

以及您尝试的方式,您必须给url_for函数一个这样的表单参数

{{ wtf.quick_form(form, action=url_for('two', form=form)) }}

我不确定是否可行