flask_wtf表单验证示例源码
from flask_wtf import FlaskForm from wtforms import PasswordField, StringField from wtforms.validators import Email, Length, EqualTo, DataRequired, ValidationError from conn import conn class RegisterForm(FlaskForm): """注册表单验证""" #password confirm_pwd username 和 html模板中<input name属性值一致。 password = PasswordField(label='密码', validators=[Length(3, 18, message='密码格式错误'), DataRequired('密码不能为空')]) confirm_pwd = PasswordField('确认密码', validators=[EqualTo("password", message='两次密码不一致')]) username = StringField(label='邮箱账号', validators=[Email(message='邮箱格式错误!')]) #自定义验证器 def validate_username(self, field): """邮箱是否已被注册过""" username = field.data sql = f"select * From user where username='{username}'" data = conn.data_is_in(sql) if data: raise ValidationError(message='该邮箱已经被注册!')
<form name="f1" action="{{url_for('user.register')}}" method="post" > <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"> <div class="card-body" style="line-height:30px;"> <div class="mb-3"> <label for="">邮箱账号</label> <input type="text" name="username" class="form-control"/> </div> <div class="mb-3"> <label for="">密码</label> <input type="password" name="password" class="form-control"/> </div> <div class="mb-3"> <label for="">确认密码</label> <input type="password" name="confirm_pwd" class="form-control"/> </div> <div class="mb-3"> <button type="submit" name="register_btn" class="btn btn-primary">注册</button> </div> </div> </form>
关于表单验证带来的问题
The CSRF token is missing
解决方案如下:
https://moban.shenhuangji.com/wenzhang/509.html