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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
当使用 Flask 框架时,可以使用 Flask-WTF 扩展来创建表单。以下是一个简单的注册表单的示例: ```python from flask_wtf import FlaskForm from wtforms import StringField, PasswordField, SubmitField from wtforms.validators import DataRequired, Email, EqualTo class RegisterForm(FlaskForm): username = StringField('Username', validators=[DataRequired()]) email = StringField('Email', validators=[DataRequired(), Email()]) password = PasswordField('Password', validators=[DataRequired()]) confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')]) submit = SubmitField('Sign Up') ``` 这个表单有四个字段:用户名、电子邮件、密码和确认密码。每个字段都有一个标签和一组验证器,例如 `DataRequired()` 验证器确保该字段不为空,`Email()` 验证器确保输入的值是有效的电子邮件地址,`EqualTo('password')` 验证器确保确认密码与密码相同。 在视图函数中,可以通过 `request.form` 来获取表单数据,如下所示: ```python from flask import render_template, redirect, url_for, flash, request from yourapp import app from yourapp.forms import RegisterForm @app.route('/register', methods=['GET', 'POST']) def register(): form = RegisterForm() if form.validate_on_submit(): # 处理表单提交 flash('Thanks for registering!') return redirect(url_for('index')) return render_template('register.html', form=form) ``` 在这个示例中,`form.validate_on_submit()` 方法检查表单是否已被提交并且通过了所有的验证器。如果表单数据有效,视图函数将执行处理提交的代码。否则,它将渲染包含表单的模板,以便用户可以重新输入有效的数据。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值