Python全系列 教程
3567个小节阅读:5930.9k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
页面把数据提交上来,需要经过表单验证,进而需要借助验证器来进行验证,以下是常用的内置验证器:
1. Length:字符串长度限制,有min和max两个值进行限制。
xxxxxxxxxx
username = StringField(validators=[Length(min=3,max=10,message="用户名长度必须在3到10位之间")])
2. EqualTo:验证数据是否和另外一个字段相等,常用的就是密码和确认密码两个字段是否相等。
xxxxxxxxxx
password_repeat = StringField(validators=[Length(min=6,max=10),EqualTo("password")])
3. Email:验证上传的数据是否为邮箱数据格式 如:223333@qq.com。
xxxxxxxxxx
email = StringField(validators=[Email()])
4. InputRequired:验证该项数据为必填项,即要求该项非空。
xxxxxxxxxx
username = StringField(validators=[input_required()])
5. NumberRange:数值的区间,有min和max两个值限制,如果处在这两个数字之间则满足。
xxxxxxxxxx
age = IntegerField(validators=[NumberRange(12,18)])
6. Regexp:定义正则表达式进行验证,如验证手机号码。
xxxxxxxxxx
phone = StringField(validators=[Regexp(r'1[34578]\d{9}')])
7. URL:必须是URL的形式 如http://www.bjsxt.com。
xxxxxxxxxx
home_page = StringField(validators=[URL()])
8. UUID:验证数据是UUID类型。
xxxxxxxxxx
uuid = StringField(validators=[UUID()])
数据项的类型,一般常用的有
xxxxxxxxxx
from wtforms import Form,StringField,IntegerField
class RegisterForm2(Form):
uname = StringField(validators=[InputRequired()])
age = IntegerField(validators=[NumberRange(18,40)])
register.html文件
xxxxxxxxxx
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册页面</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>
formscheck.py表单验证工具类文件
xxxxxxxxxx
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()])
app.py文件
xxxxxxxxxx
from flask import Flask,request,render_template
from formscheck import RegisterForm,RegisterForm2
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())#edbfa1d6-28f2-4f40-9111-528141a8e77d
if __name__ == '__main__':
app.run(debug=True)
实时学习反馈
1. 在Flask中,WTForm中验证器说法错误的是?
A Length方法可以控制数据最小与最大长度
B NumberRange方法可以控制数据最小与最大值
C EqualTo方法可以验证与另一个数据是否相等
D URL方法可以验证是不是一个可用地址
答案
1=>D