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传给这个表单类,再调用表单类对象.validate()方法进行,如果返回True,那么代表用户输入的数据都是符合格式要求的,Flase则代表用户输入的数据是有问题的。如果验证失败了,那么可以通过表单类对象.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(): 
		#验证 要么ok 要么no 
		return "验证通过" 
	else: 
		print(form.errors) 
		return "数据验证通不过" 

if __name__ == '__main__': 
	app.run(debug=True)
	
发布了354 篇原创文章 · 获赞 4 · 访问量 7817

猜你喜欢

转载自blog.csdn.net/weixin_44733660/article/details/103975606