五十二:WTForms表单验证之基本使用
作用:
1、做表单验证,把用户提交的数据验证是否合法
2、做模板渲染
安装:pip install wtforms
表单验证
1、自定义一个表单类,继承wtforms.Form
2、定义好需要验证的字段,字段名必须和表单中需要验证的字段的name属性值保持一致
3、在需要验证的字段上,指定需要验证的数据类型
4、在相关字段上,指定验证器
5、在视图中,使用这个表单类的对象,并且把需要验证的数据:request.form传给这个表单类,然后调用form.validate()方法,如果返回True,说明验证通过,如果返回False,说明数据有问题,具体问题可以通过form.errors来获取
from flask import Flask, request, render_template
from wtforms import Form, StringField
from wtforms.validators import Length, EqualTo class RegistForm(Form):
""" 注册参数验证 """
# form表单中参数的name属性值
username = StringField(validators=[Length(3, 10, message='用户名长度为3~10位')])
password = StringField(validators=[Length(6, 10, message='密码长度为6~10位')])
check_password = StringField(validators=[Length(6, 10, message='密码长度为6~10位'), EqualTo('password', message='两次密码不一致')]) app = Flask(__name__) @app.route('/regist/', methods=['GET', 'POST'])
def regist():
form = RegistForm(request.form)
if request.method == 'POST':
if form.validate():
return '验证通过'
else:
print(form.errors)
return form.errors
return render_template('regist.html') if __name__ == '__main__':
app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<form action="#" method="post">
<table>
<tbody>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="text" name="password"></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="text" name="check_password"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="点击注册"></td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
提交数据
五十二:WTForms表单验证之基本使用的更多相关文章
- 五十三:WTForms表单验证之常用验证器
Email:验证数据是否为邮箱EqualTo:验证此字段的数据是否和另一个字段的值相等,常用与校验密码和确认密码InputRequired:检验数据必传Length:校验数据长度NumberRange ...
- 测开之路一百四十八:WTForms表单验证
使用WTForms表单验证,可以在数据建模时就设置验证信息和错误提示 创建模型时,设置验证内容,如必填.格式.长度 from flask_wtf import Formfrom wtforms imp ...
- flask框架(八)—自定义命令flask-script、多app应用、wtforms表单验证、SQLAIchemy
自定义命令flask-script 用于实现类似于django中 python3 manage.py runserver ...类似的命令,用命令行启动项目 首先安装:pip3 install fla ...
- flask之wtforms 表单验证(一)
一 安装wtforms pip install wtforms 二 导入相关模块及对象 from wtforms import Form, widgets, validators from wtf ...
- 五十四:WTForms表单验证之自定义表单验证器
如果想要对表单中的某个字段进行自定义验证,则需要对这个字段进行单独的验证1.定义一个方法,命名规则为:validate_字段名(self, filed)2.在方法中,使用filed.data获取字段的 ...
- 五十五:WTForms表单验证之渲染模板
此功能看似强大,实则鸡肋 from wtforms import Form, StringField, BooleanField, SelectFieldfrom wtforms.validators ...
- Flask wtforms 表单验证使用
目录 wtforms 使用1(简单版): 使用2(复杂版): wtforms 安装:pip3 install wtforms 使用1(简单版): from flask import Flask, re ...
- Django(5) session登录注销、csrf及中间件自定义、django Form表单验证(非常好用)
一.Django中默认支持Session,其内部提供了5种类型的Session供开发者使用: 数据库(默认) 缓存 文件 缓存+数据库 加密cookie 1.数据库Session 1 2 3 4 5 ...
- 玩转spring boot——AOP与表单验证
AOP在大多数的情况下的应用场景是:日志和验证.至于AOP的理论知识我就不做赘述.而AOP的通知类型有好几种,今天的例子我只选一个有代表意义的“环绕通知”来演示. 一.AOP入门 修改“pom.xml ...
随机推荐
- 浅谈apidoc的使用
使用前提:服务器已经安装好apidoc了 1.项目根目录建立 apidoc.json ,文件基础信息如下 { "name": "项目名称", "ver ...
- Linux :ssh sftp scp
SSH 概述 1 SSH协议,Secure Shell ,为客户提供安全的shel环境,默认端口22 OpenSSH服务 服务名称:sshd 主程序:/usr/bin/sshd /usr/bin ...
- Alpha版本第一周小结
姓名 学号 周前计划安排 每周实际工作记录 自我打分(百分制) HTB 061126 1.博客撰写,分配任务 2.编码实现各个模块的功能 1.撰写博客 2.已初步实现各个模块的功能,对某些数据处理还存 ...
- Django REST Framework(DRF)_第三篇
DRF版本控制 介绍 我们在看APIView源码时可以看到,版本和版本控制类是通过determine_version的返回值获取的 version, scheme = self.determine_v ...
- Codeforces Round #454 D. Power Tower (广义欧拉降幂)
D. Power Tower time limit per test 4.5 seconds memory limit per test 256 megabytes input standard in ...
- UVa400 Unix is
The computer company you work for is introducing a brand new computer line and is developing a new U ...
- Eclipse里Maven配置
简单记录一下,太特么困了,这几天天天加班很晚来着 : 选中.Apply and Close. 完成. 日他得,腰都快加断了……:) ---------------------------------- ...
- spark 三种数据集的关系(二)
一个Dataset是一个分布式的数据集,而且它是一个新的接口,这个新的接口是在Spark1.6版本里面才被添加进来的,所以要注意DataFrame是先出来的,然后在1.6版本才出现的Dataset,提 ...
- Js之DateFormat工具类
/** * 对Date的扩展,将Date转化为指定格式的String * 年(y).季度(q).月(M).日(d).小时(h).分(m).秒(s)可以用1-2个占位符 * 示例: * FormatDa ...
- java——通过GenericObjectPool获取到的资源,调用close()方法会close还是returnObject?
一种优雅的关闭资源的方式是使用try(){}cache(){} 就像这样: 这时候,try()里面的资源会在return语句执行结束之后自动调用close()方法,那么问题来了,当我们使用连接池的时候 ...