从Flask路径中的wtforms FormField获取数据

时间:2016-04-13 04:37:41

标签: python flask wtforms

我在使用路径

中的表单中获取数据时遇到问题

forms.py

class Calculator(Form):
    amount = IntegerField('Amount')
    weight = IntegerField('Weight')

class Program(Form):
    cycles = IntegerField('Cycles')
    volume = FormField(Calculator)

app.py

@app.route('/', methods=('GET', 'POST'))
def index():
    form = forms.Program()
    if form.validate_on_submit():
        values = models.Progression(
            cycles=form.cycles.data,
            amount=form.amount.data,
            weight=form.weight.data
        )
    return render_template('index.html', form=form, values=values)

cycles的数据很好,但我不确定如何在我的路由中访问封装表单的语法。文档说FormField将返回所附表单的数据字典,但我似乎无法弄清楚如何获取并将其放入变量中。

2 个答案:

答案 0 :(得分:2)

我能够使用

获取我需要的数据
    amount=form.volume.amount.data,
    weight=form.volume.weight.data

真正的问题来自于我使用FormField时表单未验证的事实。我应该先检查一下菜鸟错误。 我必须通过从flask_wtf导入并使用CsrfProtect(app)

来启用CSRF保护

答案 1 :(得分:0)

问题是表单数据不是Calculator类的属性。数据以volume属性的字典形式发送。

使用:print form.volume.data

进行测试

(我建议您注释掉values对象并使用print语句

输出应为:{'amount': foo, 'weight': bar}

感谢您教我一些东西!我从来不知道FormField