Flask高级_WTF常用的验证器
一.常用验证器的介绍
-
Length:字符串长度限制,有min和max两个值进行限制。
-
EqualTo:验证数据是否和另外一个字段相等,常用的就是密码 和确认密码两个字段是否相等。
-
Email:验证上传的数据是否为邮箱数据格式 如:223333@qq. com。
-
InputRequired:验证该项数据为必填项,即要求该项非空。
-
NumberRange:数值的区间,有min和max两个值限制,如果 处在这两个数字之间则满足。
-
Regexp:定义正则表达式进行验证,如验证手机号码。
-
URL:必须是URL的形式 如http://www.163.com
-
UUID:验证数据是UUID类型。
二.实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>注册页面</title>
</head>
<body>
<form action="/register/" 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>
类文件:
from cmath import phase
import email
from wtforms import Form,StringField,IntegerField
from wtforms.validators import Length,EqualTo,Email,InputRequired,NumberRange,Regexp,URL,UUID
class registerForm(Form):
email = StringField(validators=[Email()])
uname = StringField(validators=[InputRequired()])
age = IntegerField(validators=[NumberRange(min=18,max=60)])
phone = StringField(validators=[Regexp(r'^1[789]\d{9}$')])
phomepage = StringField(validators=[URL()])
uuid = StringField(validators=[UUID()])
main文件:
#coding=utf-8
from flask import Flask,render_template,request
from Form验证器 import registerForm
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello~'
@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():
return '验证成功!!!'
return f'验证失败!!!失败原因:{form.errors}'
if __name__ == '__main__':
app.run(debug=True)