验证Flask WTF表单中的选择字段

Cra*_*ete 4 python flask wtforms

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

在forms.py中

class DealForm( Form ):
    country  = SelectField( 'Country' )
Run Code Online (Sandbox Code Playgroud)

在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 )
Run Code Online (Sandbox Code Playgroud)

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

Thi*_*ter 11

您需要在呼叫前设置选项validate_on_submit().

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

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

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

form.country.choices = [('us','USA'),('gb','Great Britain'),('ru','Russia')]
Run Code Online (Sandbox Code Playgroud)

就像你早先做过的那样.