Flask-WTF之表单验证
目的:实现一个简单的登陆的逻辑处理
1.路由需要有get和post两种请求方式 --> 需要判断请求方式
2.获取请求的参数(从表单中拿到数据)
3.判断参数是否填写,以及密码是否相同
4.如果判断都没有问题,就返回一个success
安装Flask-WTF
pip install Flask-WTF
目录结构
Flask_WTF.py
from flask import Flask,render_template,request,flash
#导入wtf扩展的表单类
from flask_wtf import FlaskForm
#导入自定义表单需要的字段
from wtforms import SubmitField,StringField,PasswordField
#导入wtf扩展提供的表单验证器
from wtforms.validators import DataRequired,EqualTo
#解决编码问题
import importlib,sys
importlib.reload(sys)
app = Flask(__name__)
app.secret_key = 'itheima'
#自定义表单类,文本字段,密码字段,提交按钮
class LoginForm(FlaskForm):
username = StringField('用户名:',validators=[DataRequired()])
password = PasswordField('密码:',validators=[DataRequired()])
password2 = PasswordField('确认密码:',validators=[DataRequired(),EqualTo('password','密码填写的不一致')])
submit = SubmitField('提交')
#定义根路由试图函数,生成表单对象,获取表单数据,进行表单数据验证
@app.route('/form',methods=['GET','POST'])
def login():
login_form = LoginForm()
#1.判断请求方式
if request.method == 'POST':
#2.获取请求的参数
username =request.form.get('username')
password =request.form.get('password')
password2 =request.form.get('password2')
# 3.调用validation_on_submit方法,可以一次性执行完所有验证函数的逻辑
if login_form.validate_on_submit():
return 'success'
else:
flash('参数有误')
return render_template("index.html",form = login_form)
if __name__ == '__main__':
app.run(debug=True,port=5111)
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post">
{{ form.csrf_token() }}
{{ form.username.label }}{{ form.username }}<br>
{{ form.password.label }}{{ form.password }}<br>
{{ form.password2.label }}{{ form.password2 }}<br>
{{ form.submit }}
</form>
</body>
</html>
效果:
点击提交按钮:
WTForms包也包含验证器类。它对表单字段应用验证很有用。以下列表显示了常用的验证器。
验证器类 | 描述 |
---|---|
DataRequireed | 确保字段中有数据 |
EnqualTo | 比较两个字段的值,常用于比较两次密码输入 |
Length | 验证输入的字段长度 |
NumberRange | 验证输入的值在数字范围内 |
URL | 验证URL |
AnyOf | 验证输入值在可选列表中 |
NoneOf | 验证输入值不在可选列表中 |
WTforms包中包含各种表单字段的定义。下面列出了一些标准表单字段
记一些错误:
1、解决python的编码问题
python2的解决方法
import sys
reload(sys)
sys.setdefaultencoding(‘utf-8’)
python3的解决方法
import importlib,sys
importlib.reload(sys)
2、安装Flask-WTF遇到的问题:AttributeError: module ‘pip’ has no attribute ‘main’
降级pip的版本:
python -m pip install --user --upgrade pip==9.0
这是根据黑马程序员的一门Flask课程记录的笔记。
视频地址:6节课入门Flask框架web开发视频
来源:CSDN
作者:忌颓废
链接:https://blog.csdn.net/weixin_44947339/article/details/104575608