WTF表单验证可分为3个步骤:

①导入wtf扩展提供的表单验证器。(from wtforms.validators import DataRequired,EqualTo)

②定义表单类

# 定义表单类
class RegisterForm(FlaskForm):
username =StringField('账号:',validators=[DataRequired()])
password =PasswordField('密码:',validators=[DataRequired()])
password2 = PasswordField('确认密码:',validators=[DataRequired(),EqualTo('password','两次密码不一致')])
submit=SubmitField('提交')

③验证逻辑(判断请求方式——>请求参数——>验证)

redist_form=RegisterForm()

    if request.method=='POST':
username=request.form.get('username')
password = request.form.get('password')
password2 = request.form.get('password2')
if redist_form.validate_on_submit():
print(username,password)
return 'success'
else:
flash('参数有误')
return render_template('registform.html',form=redist_form)

完整代码:

app.py

from flask import Flask,render_template,request,flash
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField,SubmitField
from wtforms.validators import EqualTo,DataRequired
app = Flask(__name__)
app.secret_key='yingjie' # 定义表单类
class RegisterForm(FlaskForm):
username =StringField('账号:',validators=[DataRequired()])
password =PasswordField('密码:',validators=[DataRequired()])
password2 = PasswordField('确认密码:',validators=[DataRequired(),EqualTo('password','两次密码不一致')])
submit=SubmitField('提交') @app.route('/regist',methods=['GET','POST'])
def regist_form():
redist_form=RegisterForm() if request.method=='POST':
username=request.form.get('username')
password = request.form.get('password')
password2 = request.form.get('password2')
if redist_form.validate_on_submit():
print(username,password)
return 'success'
else:
flash('参数有误')
return render_template('registform.html',form=redist_form) if __name__ == '__main__':
app.run()

registform.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>
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
</body>
</html>

运行截图:

最新文章

  1. 安卓中級教程(10):@InjectView
  2. LoadRunner录制一个登录
  3. JS定义函数的两种方式:函数声明和函数表达式
  4. at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 报空指针
  5. c#之双色球
  6. 5. Longest Palindromic Substring -- 最长回文字串
  7. MAC上 nodejs express 安装
  8. leveldb源码笔记
  9. 关于继承UITableViewController若干问题
  10. 在web page中使鼠标右击失效的几种方法
  11. ssh (免密码登录、开启服务)
  12. git Remote: HTTP Basic: Access denied Git failed with a fatal error.
  13. ES6学习笔记四(类和对象)
  14. spring AOP 之二:@AspectJ注解的3种配置
  15. Copycat - AppendRequest
  16. 再谈Lasso回归 | elastic net | Ridge Regression
  17. InterBase 数据库与驱动 版本不同
  18. ADO.Net 数据库修改
  19. 基于Docker搭建LNMP环境(转)
  20. rpmverify命令用来验证已安装的rpm软件包的正确性

热门文章

  1. 前端进阶(8) - 前端开发需要了解的工具集合:webpack, eslint, prettier, ...
  2. css-theme 通过一套源码生成一份包含多套皮肤配置的样式文件
  3. java中抽象类和抽象方法到底什么关系?请举例说明!
  4. Mybatis实现简单增删改查
  5. 为Anaconda python3安装gi模块
  6. servlet和action的区别
  7. 在keil中加入DSP库并且使用arm_math.h
  8. 入门学习SpringCloud
  9. Mysql学习day2随笔
  10. Exception in thread &quot;main&quot; java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibilit