锋哥原创的Flask3 Python Web开发 Flask3视频教程:
2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili
我们可以通过WTForms表单类属性的validators属性来实现表单验证。
常用的WTForms验证器
验证器 | 说明 |
---|---|
DataRequired(message=None) | 验证数据是否有效 |
Email(message=None) | 验证Email地址 |
EqualTo(fieldname, message=None) | 验证两个字段值是否相同 |
InputRequired(message=None) | 验证是否有数据 |
Length(min=-1 , max=-1 , message=None) | 验证输入值长度是否在给定范围内 |
NumberRange(min=None, max=None, message=None) | 验证输入数字是否在给定范围内 |
Optional(strip_whitespace=True) | 允许输入值为空,并跳过其他验证 |
Regexp(regex, flags=O, message=None) | 使用正则表达式验证输入值 |
URL(require_tld=True, message=None) | 验证URL |
AnyOf(values, message=None, values_formatter=None) | 确保输入值在可选值列表中 |
NoneOf(values, message=None, values_formatter=None) | 确保输入值不在可选值列表中 |
改写LoginForm实例:
class LoginForm(FlaskForm):
username = StringField('用户名', render_kw={'placeholder': '请输入用户名'},
validators=[DataRequired()])
password = PasswordField('密码', render_kw={'placeholder': '请输入用户名'},
validators=[DataRequired(), Length(1, 6)])
remember = BooleanField("记住我")
submit = SubmitField("登录")
如果验证没通过,点击登录按钮会有提示:
后端视图里通过validate()方法来验证:
@user_bp.route('/login', methods=['GET', 'POST'])
def login():
print(request.method)
loginForm = LoginForm()
print("标签:", loginForm.username.label)
print("表单", loginForm.username)
if request.method == 'GET':
return render_template('login.html', form=loginForm)
else:
if loginForm.validate():
username = loginForm.username.data
password = loginForm.password.data
print(username, password)
return 'ok'