Flask开发中wtforms的InputRequired类实例化错误求助
解决WTForms InputRequired 类实例错误
错误提示TypeError: <class 'wtforms.validators.InputRequired'> is not a valid validator because it is a class, it should be an instance的原因很直接:你在LoginForm中传入了InputRequired类本身,而不是它的实例。
错误代码位置
你的LoginForm里的字段验证器写法有误:
class LoginForm(FlaskForm): username = StringField(validators=[InputRequired, Length(min=4, max=20)], render_kw={"placeholder": "Username"}) password = PasswordField(validators=[InputRequired, Length(min=4, max=20)], render_kw={"placeholder": "Password"}) submit = SubmitField("Login")
这里的InputRequired没有加括号,传递的是类对象,而非实例。
修正后的代码
把InputRequired改成InputRequired()(即使不需要额外参数也要加括号实例化):
class LoginForm(FlaskForm): username = StringField(validators=[InputRequired(), Length(min=4, max=20)], render_kw={"placeholder": "Username"}) password = PasswordField(validators=[InputRequired(), Length(min=4, max=20)], render_kw={"placeholder": "Password"}) submit = SubmitField("Login")
补充说明
你在RegisterForm里的写法是正确的,只是LoginForm漏了括号。这不是WTForms版本更新的问题,而是语法使用错误——WTForms的所有验证器都是类,必须通过加括号创建实例后才能作为验证器传入字段。
内容的提问来源于stack exchange,提问作者Dragynjump
相关产品推荐
相关产品推荐

