Flack之 WTForms


WTForms插件

  • 这个插件库主要有两个作用。
    • 第一个是做表单验证,将用户提交上来的数据进行验证是否符合系统要求。
    • 第二个是做模版渲染。 (很少使用)

Flask-WTF

  • Flask-WTF是简化了WTForms操作的一个第三方库。

  • WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板。

  • Flask-WTF还包括一些其他的功能:CSRF保护文件上传等。


安装Flask-WTF

  • 安装Flask-WTF默认也会安装WTForms,因此使用以下命令来安装Flask-WTFWTForms:
  • pip install flask-wtf

WTForms表单验证

  1. 自定义一个表单类,继承自wtforms.Form类。
  2. 定义好需要验证的字段,字段的名字必须和模版中那些需要验证的input标签的name属性值保持一致。
  3. 在需要验证的字段上,指定好具体的数据类型
  4. 在相关的字段上,指定验证器
  5. 以后在视图函数中,只需要使用这个表单类的对象,并且把需要验证的数据,也就是request.form传给这个表单类
  6. 再调用表单类对象.validate()方法进行,如果返回True,那么代表用户输入的数据都是符合格式要求的,Flase则代表用户输入的数据是有问题的。
  7. 如果验证失败了,那么可以通过表单类对象.errors来获取具体的错误信息。

注册页面


<!DOCTYPE html> 
<html lang="en"> 
<head> 
	<meta charset="UTF-8"> 
	<title>某系统注册页面</title> 
</head> 

<body> 
	<form action="/register/" method="post"> 
		<table> 
			<tr> 
				<th>用户名:</th> 
				<td><input type="text" name="uname"></td> 
			</tr> 

			<tr> 
				<th>密码:</th> 
				<td><input type="password" name="pwd"></td> 
			</tr> 

			<tr> 
				<th>确认密码:</th> 
				<td><input type="password" name="pwd2"></td> 
			</tr> 

			<tr> 
				<td></td> 
				<td><input type="submit" value="注册"></td> 
			</tr> 
		</table> 
	</form> 
</body> 
</html>

python文件


from flask import Flask,request,render_template 
from wtforms import Form,StringField #验证的类型
from wtforms.validators import Length,EqualTo #验证器

# validators 存储验证器
app = Flask(__name__) 

class RegisterForm(Form):

	#message更改系统默认的英语错误提示信息。 
	uname =StringField(validators=[Length(min=2,max=15,message='用户名长度必须在2-15之间')]) 
	pwd = StringField(validators=[Length(min=6,max=12)])
	# EqualTo:相同 
	pwd2 = StringField(validators=[Length(min=6,max=12),EqualTo("pwd")]) 

@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(): 
		return "验证通过" 
	else: 
		print(form.errors) 
		return "数据验证通不过" 

if __name__ == '__main__': 
	app.run(debug=True)
	

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值