鋒哥原創的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.datapassword = loginForm.password.dataprint(username, password)return 'ok'