WTForms常用验证器
- 页面把数据提交上来,需要经过表单验证,进而需要借助验证器来进行验证
常用的内置验证器:
Length
:字符串长度限制,有min
和max
两个值进行限制。EqualTo
:验证数据是否和另外一个字段相等,常用的就是密码和确认密码两个字段是否相等。Email
:验证上传的数据是否为邮箱数据
格式 如:python123.@163.com
。InputRequired
:验证该项数据为必填项,即要求该项非空
。NumberRange
:数值的区间,有min
和max
两个值限制,如果处在这两个数字之间则满足。Regexp
:定义正则表达式进行验证,如验证手机号码
。URL
:必须是URL
的形式 如https://www.baidu.com
。UUID
:验证数据是UUID
类型。
数据项的类型,一般常用的有:
StringField 文本类型
IntegerField 数字类型
RadioField 单选框
BooleanField 复选框
SelectField 下拉框
TextAreaField 文本域
DateField 日期类型
from wtforms import Form,StringField,IntegerField,RadioField,
from wtforms import BooleanField,SelectField,TextAreaField,DateField
验证实用
- html页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面2</title>
</head>
<body>
<form action="/register2/" method="post">
<table>
<tr>
<th>邮箱:</th>
<td><input type="email" name="email"></td>
</tr>
<tr>
<th>用户名:</th>
<td><input type="text" name="uname"></td>
</tr>
<tr>
<th>年龄:</th>
<td><input type="number" name="age"></td>
</tr>
<tr>
<th>手机号码:</th>
<td><input type="text" name="phone"></td>
</tr>
<tr> <
th>个人主页:</th>
<td><input type="text" name="phomepage"></td>
</tr>
<tr>
<th>uuid:</th>
<td><input type="text" name="uuid"></td>
</tr>
<tr>
<th></th>
<td><input type="submit" value="注册"></td>
</tr>
</table>
</form>
</body>
</html>
- python表单验证工具类文件:
from wtforms import Form,StringField,IntegerField
from wtforms.validators import Length,EqualTo,Email,InputRequired,NumberRange,Regexp,URL,UUID
class RegisterForm(Form):
uname =StringField(validators=[Length(min=2,max=15,message='用户名长度必须在2-15之间')])
pwd = StringField(validators=[Length(min=6,max=12)])
pwd2 = StringField(validators=[Length(min=6,max=12),EqualTo("pwd")])
class RegisterForm2(Form):
email = StringField(validators=[Email()])
uname = StringField(validators=[InputRequired()])
age = IntegerField(validators=[NumberRange(18,40)])
phone = StringField(validators=[Regexp(r'1[34578]\d{9}')])
phomepage = StringField(validators=[URL()])
uuid = StringField(validators=[UUID()])
- python项目入口文件:
from flask import Flask,request,render_template
from formscheck import RegisterForm
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template("register.html")
#基本使用
@app.route('/register/',methods=['GET','POST'])
def register():
if request.method == 'GET':
return render_template('register.html')
else:
form = RegisterForm(request.form)
if form.validate():
#验证 要么ok 要么no
return "验证通过"
else:
print(form.errors)
return "数据验证通不过"
#常用验证器使用
@app.route('/register2/',methods=['GET','POST'])
def login():
if request.method == 'GET':
return render_template("register2.html")
else:
form = RegisterForm2(request.form)
if form.validate():
return "验证OK"
else:
print(form.errors)
return "验证失败"
import uuid
print(uuid.uuid4())
if __name__ == '__main__':
app.run(debug=True)