class StaffForm(FlaskForm):
username = wtforms.StringField('用户名', [validators.Length(min=4, max=25)], render_kw={"class": "form-control"})
email = wtforms.StringField('邮箱地址', [validators.Length(min=6, max=35), validators.Email()],
render_kw={"class": "form-control"})
sex = wtforms.SelectField("性别", choices=[(0, "男"), (1, "女")], render_kw={"class": "form-control"}, coerce=int)
password = wtforms.PasswordField('密码', [
validators.DataRequired(),
validators.EqualTo('confirm', message='两次密码必须一致')
], render_kw={"class": "form-control"})
confirm = wtforms.PasswordField('确认密码', render_kw={"class": "form-control"})
accept_tos = wtforms.BooleanField('我同意以上协议', [validators.DataRequired()])
以上是正确的写法
1. render_kw
可以用来渲染页面上是给html标签增加属性
2. SelectField
choices选项的值默认校验会和字符串进行比较
sex = wtforms.SelectField("性别", choices=[("0", "男"), ("1", "女")], render_kw={"class": "form-control"})
以下写法验证会报错(Not a valid choice
)
sex = wtforms.SelectField("性别", choices=[(0, "男"), (1, "女")], render_kw={"class": "form-control"})
可以这样写
sex = wtforms.SelectField("性别", choices=[(0, "男"), (1, "女")], render_kw={"class": "form-control"}, coerce=int)
部分源码: