WTForms验证下拉列表数值

5
我正在使用Flask和WTForms创建一个表单,但是在下拉菜单中,我希望每个下拉菜单都有一个“请选择”选项,在选择后会导致验证要求为false,例如还没有选择值。
我需要使用正则表达式验证或自定义验证来实现这一点吗?如果我需要自定义验证,那么我该如何构建它?
CAR_MAKES = [('-1', "Please select a vehicle make..."), (1, 'Honda'),
(2, 'Ford'), (3, 'BMW')]
dd_car_makes = SelectField('dd_car_makes', choices=CAR_MAKES,
validators=[DataRequired()])
2个回答

2

您可以在此使用自定义验证器。请查看WTForms文档中的自定义验证器

def your_validator(form, field):
    if field.data == -1:
        raise ValidationError('Please select a vehicle make...')

dd_car_makes = SelectField('dd_car_makes', choices=CAR_MAKES,
                            validators=[DataRequired(), your_validator])

2
您只需要给“请选择”选项赋一个非真值,并使用标准验证器即可:
SelectField('Car', coerce=int,
            choices=[(0, 'Please Select...'), (1, 'Honda')],
            validators=[DataRequired()])

谢谢巴特利特。我没有期望它会以这种方式工作,但它确实做到了。 - Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接