flask学习之form表单验证

安装flask-wtf第三方库:用于表单验证

pip install flask-wtf
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField
from wtforms.validators import DataRequired,Length,EqualTo,Email,ValidationError

class RegisterForm(FlaskForm):
    username = StringField('用户名',validators=[DataRequired("用户名必须输入"),Length(min=3,message="用户名不能少于3位")])
    password = PasswordField('密码',validators=[DataRequired('密码必须输入'),Length(min=6,message='密码至少6位')])
    confirm  = PasswordField('确认密码',validators=[DataRequired('密码必须输入'),EqualTo('password',message="两次密码输入不一致")])


# 自定义验证用户不能重复
    def validate_username(self,field):
        # field.data是要验证的值
        # print(field,field.data)
        if User.query.filter(User.username==field.data).first():
            raise ValidationError("用户名重复")

常见字段类型

字段类型字段说明
StringField普通⽂本字段
SubmitField提交按钮
PasswordField密码输⼊框
HiddleField隐藏域
TextAreaField多⾏⽂本域
DateField⽇期字段
DateTimeField⽇期时间字段
IntegerFIeld整形字段
FloatField浮点字段
BooleanField bool类型字段
RadioField单选
SelectField下拉
FileField⽂件上传

常见验证器

验证说明
DateRequired必填
Email邮箱地址
IPAddressIP地址
Length内容的⻓度 有max 和min
NumberRange值的范围 min和max
EqualTo验证俩个字段是否相同
URL验证URL地址
Regexp正则匹配

eg:


class Register(FlaskForm):
 #username为当前标签的name值 ⽤户名为到那个前标签展示的左侧的label标签
点击⽤户名 出发当前标签选中节点
 username = StringField('⽤户名',validators=[DataRequired('请输⼊⽤
户名'),Length(min=6,max=12,message='⽤户名⻓度范围在6~12位之间')])
 userpass = PasswordField('密码',validators=[DataRequired('请输⼊密
码'),Length(min=6,max=12,message='密码⻓度范围在6~12位之间')])
 confirm = PasswordField('确认密码',validators=[DataRequired('请输
⼊确认密码'),EqualTo('userpass',message='密码和确认密码不⼀致')])
 email = StringField('邮箱',validators=[DataRequired('请输⼊邮箱地
址'),Email(message='请输⼊正确的邮箱')]) submit = SubmitField('注册') #注册
@app.route('/register/',methods=['GET','POST'])
def register():
 form = Register() #实例化表单类
 #这个⽅法是实现表单校验功能的 csrf,数据正确性 都通过了 则为真 否则为假
 if form.validate_on_submit():
 # print(request.form)
 print(form.username) #拿到username的整个标签
 print(form.username.data) #取出username⾥⾯的value值
 return '数据提交过来了'
 return render_template('register.html',form=form
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值