有时候我们经常会跟前端提交的表单数据打交道,每次手写验证规则真的很繁琐。Flask-WTF扩展模块提供了前端表单自动生成和前端表单提交数据验证的功能。

WTForms支持的HTML标准字段

字段对象 说明
StringField 文本字段
TextAreaField 多行文本字段
PasswordField 密码文本字段
HiddenField 隐藏文本字段
DateField 文本字段,值为datetime.date格式
DateTimeField 文本字段,值为datetime.datetime格式
IntegerField 文本字段,值为整数
DecimalField 文本字段,值为decimal.Decimal
FloatField 文本字段,值为浮点数
BooleanField 复选框,值为True和False
RadioField 一组单选框
SelectField 下拉列表
SelectMultipleField 下拉列表,可选择多个值
FileField 文本上传字段
SubmitField 表单提交按钮
FormField 把表单作为字段嵌入另一个表单
FieldList 一组指定类型的字段

WTForms常用验证函数

验证函数 说明
DataRequired 确保字段中有数据
EqualTo 比较两个字段的值,常用于比较两次密码输入
Length 验证输入的字符串长度
NumberRange 验证输入的值在数字范围内
URL 验证URL
AnyOf 验证输入值在可选列表中
NoneOf 验证输入值不在可选列表中

register.html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Register</title>
</head>
<body>
<form method="post"><div>用户名:<input type="text" name="username"></div><div>邮  箱:<input type="text" name="email"></div><div>密  码:<input type="password" name="password1"></div><div>再次输入:<input type="password" name="password1"></div><div><input type="submit" value="Submit"></div>
</form>
</body>
</html>

flask.py

# coding=utf-8
from flask import Flask, render_template, request
from wtforms import Form, StringField, PasswordField, validatorsapp = Flask(__name__)class UserRegisterForm(Form):"""用户注册表单验证"""username = StringField([validators.Length(min=4, max=10), validators.DataRequired()])email = StringField([validators.DataRequired()])password1 = PasswordField([validators.DataRequired(), validators.EqualTo("password2")])password2 = PasswordField([validators.DataRequired()])@app.route('/user/register/', methods=["GET", "POST"])
def user_register():form = UserRegisterForm(request.form)if request.method == "POST" and form.validate():print(form.username.data)print(form.email.data)print(form.password1.data)print(form.password2.data)return "Thank you for your register!"return render_template("register.html")if __name__ == '__main__':app.run()

这里前端的表单是我们自己通过前端标签手写的,我在后端定义了UserRegisterForm类,将类实例化把request.form作为参数传入实例中,validate()方法验证数据格式是否正确,返回True或False。Flask中的WTForms跟Django中的Form功能一样!

转载于:https://blog.51cto.com/daibaiyang119/2046253

Flask之WTForms验证相关推荐

  1. flask token 登录验证

    flask token 登录验证 视频 https://www.youtube.com/watch?v=J5bIPtEbS0Q 代码 #!/usr/bin/env python # -*- encod ...

  2. Flask之WTForms

    简介 WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 用户登录注册示例 1. 用户登录 当用户登录时候,需要对 ...

  3. flask实现token验证

    from flask import Flask from flask.globals import request from flask.json import jsonify from itsdan ...

  4. mysql 凭证_如何用mysql验证flask/python中的凭证?

    Flask/python登录验证对mysql不起作用,我在搜索google和文档,我在同一件事上看到了一些关于堆栈溢出的问题,但还没有得到回答.在from flask import Flask, re ...

  5. 简单Flask登录验证

    记录一下学习Flask的过程 下面是一个简单的FLask的登录验证代码 from flask import Flask from flask import requestapp = Flask(__n ...

  6. Flask开发系列之Web表单

    Flask开发系列之Web表单 简单示例 from flask import Flask, request, render_templateapp = Flask(__name__) @app.rou ...

  7. python前端学习-------Flask框架基础(建议收藏)

    Flask框架基础 下载并安装Flask框架 Flask基础 第一个Flask应用 开启调试模式 路由 变量规则 构造URL HTTP方法 模板 语法格式 模板变量 控制结构 条件控制语句 `if` ...

  8. Flask 学习(一)

    Flask 初步学习 Flask程序的基本构造 from flask import Flask,render_templateapp = Flask(__name__)@app.route('/') ...

  9. 偷个懒,公号抠腚早报80%自动化——3.Flask速成大法

    简述 在上一节中,我们编写了抓取新闻的爬虫脚本,每天早上八点定时抓取新闻保存到 MySQL数据库中.直接用DataGrip连下数据库,就可以查看爬取到的新闻了.不过, 并不是我们想要的最终形态.我希望 ...

最新文章

  1. 卷积神经网络(Convolutional Neural Network, CNN)
  2. 原来 Matplotlib 绘图也可以这么漂亮,这次真的是学习到了!
  3. C# DllImport的用法(转)
  4. install-newton部署安装--------计算节点部署安装
  5. Python+bs4实现爬取小说并下载到本地
  6. 女人假正经的十三种表现
  7. 片上总线Wishbone 学习(九)总线周期之单次读操作
  8. ipv6地址概述——配置ipv6
  9. 一、回首向来萧瑟处,也无风雨也无晴
  10. Numpy + Matplotlib 绘制白色画图
  11. win10安装TeamView 提示rollback framework could not be initialized
  12. 安卓图像更新学习总结
  13. cad调了比例因子没反应_「室内设计」大神们都在用的9个CAD制图技巧,你会用几个?...
  14. 关于对vue-particle-effect-button的使用
  15. 医学图像分类_腾讯八篇论文入选顶级医学影像会议MICCAI ,涉及病理癌症图像分类等...
  16. 南昌大学 计算机面试题,南昌大学计算机应用技术专业调剂生复试经验
  17. 关于MATLAB2019a的三相全控桥整流电路的画法学习
  18. 怎么用DreamWare新建立一个静态网站的站点
  19. 洛谷P1827[USACO3.4] 美国血统 American Heritage
  20. PHP 过滤除中英文以外的所有字符

热门文章

  1. ES6笔记(4)-- Symbol类型
  2. MediaPlayer开发全解析
  3. 黑盒测试 白盒测试 题
  4. 微软宣布正式开源 Azure IoT Edge 边缘计算服务
  5. 使用Wisdom RESTClient如何在Linux和Mac上获取测试报告和API文档?
  6. react开发教程(十)redux结合react
  7. IntelliJ IDEA自动导入包去除星号(import xxx.*)
  8. SQL SERVER数据库 “可能发生了架构损坏。请运行DBCC CHECKCATALOG。的错误修复
  9. error: device not found - waiting for device -
  10. jboss-as-web-7.0.1.Final 配置 SSL