验证Flask WTForms中的选择字段

时间:2012-06-06 20:11:06

标签: python flask wtforms

我正在使用Flask-WTF表单,我有以下代码:

在forms.py

class DealForm( Form ):
    country  = SelectField( 'Country' )
在main.py中

if not form.validate_on_submit():
    form = DealForm()
    form.country.choices = [('us','USA'),('gb','Great Britain'),('ru','Russia')]
    return render_template( 'index.html', user = current_user, form = form )
else:
    return render_template( 'index.html', form = form )

从POST返回时出错,因为country.choices为None 我做错了什么?

1 个答案:

答案 0 :(得分:11)

您需要在致电validate_on_submit()之前设置选项。

因为它们是静态的,所以在创建Form类时执行:

class DealForm(Form):
    country = SelectField('Country', choices=[
        ('us','USA'),('gb','Great Britain'),('ru','Russia')])

如果您想在创建表单实例后设置它们,例如因为可用选项不是硬编码或根据其他因素而不同,所以在创建类的实例后你会这样做:

form.country.choices = [('us','USA'),('gb','Great Britain'),('ru','Russia')]

即。就像你早先做过的那样。