Flask-WTForms 简单使用
安装 wtforms 2.2.1
直接上代码:
app.py 文件:
from flask import Flask, render_template, request
from wtforms import Form, validators
from wtforms.fields import simple, core # form 字段设计
class RegForm(Form):
# simple 字段类型
# StringField 和 TextAreaField 都是字符串的意思,StringField支持的类型少于StringField
username = simple.StringField(
label="用户名",
validators=[ # validators -- 校验信息
validators.DataRequired(message="用户不能为空"), # DataRequired -- 当前的地方必须填写数据; message -- 错误信息
validators.length(min=4, max=8, message="用户名必须大于等于4小于等于8") # length -- 长度
],
render_kw={"class": "my_class"} # 添加 class
) password = simple.PasswordField(
label="密码",
validators=[
validators.DataRequired(message="密码不能为空"),
validators.length(min=6, max=16, message="密码必须大于等于6小于等于16")
],
render_kw={"class": "my_class"} # 添加 class
) repassword = simple.PasswordField(
label="重复密码",
validators=[
validators.DataRequired(message="重复密码不能为空"),
validators.EqualTo("password", message="两次密码不一致") # EqualTo("字段名称") 判断该字段是否等于"字段名称"中的值
]
) gender = core.SelectField( # 单选字段在核心模块(支持的类型多)中才有
label="性别",
choices=( # 选项
(1, "女"),
(2, "男")
),
default=2, # 默认值
coerce=int # 指定前端提交过来的选项的类型是数字还是字符串 下边有验证
) email = simple.StringField(
label="邮箱",
validators=[
validators.Email(message="不符合规定")
]
) hobby = core.SelectMultipleField( # 多选字段
label="爱好",
choices=(
("", "读书"),
("", "美食"),
("", "电影"),
("", "音乐"),
),
default=("", "", "", ""),
coerce=str # 指定前端提交过来的选项的类型是数字还是字符串 下边有验证
) app = Flask(__name__) # 实例化 app reg_form = RegForm() # form信息(对象)赋值给reg_form @app.route("/form_reg", methods=["GET", "POST"])
def reg():
if request.method == "GET":
return render_template("form_reg.html", reg_form=reg_form)
if request.method == "POST":
reg_form_data = RegForm(request.form) # 拿到前端传过来的数据(request.form),给RegForm进行校验
if reg_form_data.validate(): # 如果前段穿过来的数据通过校验
print(type(reg_form_data.data.get("gender"))) # <class 'int'>
print(reg_form_data.data.get("hobby")) # ['1', '2', '3', '4']
return " * {注册成功} * 愿世界和平,无病无灾"
else:
# 前端传过来的内容未通过校验,返回注册页面, 附带注册提交的错误数据和错误提示
return render_template("form_reg.html", reg_form=reg_form_data) if __name__ == '__main__':
app.run()
form_reg.html 文件:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta http-equiv="content-Type" charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Title</title> <style>
.my_class{
width: 500px;
}
</style>
</head>
<body>
<h1>注册页面</h1>
<form action="" method="post" enctype="multipart/form-data" novalidate>
{% for field in reg_form %}
<p>{{ field.label }}: {{ field }} <span style="color: red">{{ field.errors.0 }}</span> </p>
{% endfor %} {# {{ reg_form.username.label }}: {{ reg_form.username }}{{ reg_form.username.errors.0 }}<br>#}
{# {{ reg_form.password.label }}: {{ reg_form.password }}{{ reg_form.password.errors[0] }}<br>#} <input type="submit" value="提交">
</form>
</body>
</html>
Flask-WTForms 简单使用的更多相关文章
- Flask的简单认识
Flask的简单认识 Flask是轻量级的框架,适用于简单的程序 与Django的比较: Django: 无socket,中间件,路由,视图(CBV,FBV),模板,ORM, cookie,sessi ...
- 使用Flask开发简单接口
作为测试人员,在工作或者学习的过程中,有时会没有可以调用的现成的接口,导致我们的代码没法调试跑通的情况. 这时,我们使用python中的web框架Flask就可以很方便的编写简单的接口,用于调用或调试 ...
- Flask wtforms实现简单的登录注册
目录结构 视图 # -*- coding:utf-8 -*- # Author : Niuli # Data : 2019-02-27 19:26 from flask import render_t ...
- flask wtforms组件详解
一.简介 在flask内部并没有提供全面的表单验证,所以当我们不借助第三方插件来处理时候代码会显得混乱,而官方推荐的一个表单验证插件就是wtforms.wtfroms是一个支持多种web框架的form ...
- Flask wtforms 表单验证使用
目录 wtforms 使用1(简单版): 使用2(复杂版): wtforms 安装:pip3 install wtforms 使用1(简单版): from flask import Flask, re ...
- Flask WTForms的使用和源码分析 —— (7)
Flask-WTF是简化了WTForms操作的一个第三方库.WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板.还有其它一些功能:CSRF保护, 文件上传等.安装方法: pip3 ...
- flask的简单使用
一.Flask中的CBV from flask import Flask, render_template from flask import views app = Flask(__name__, ...
- Python: Flask框架简单介绍
接触Python之后我第一次听说Flask,我就根据自己搜罗的知识尽可能简洁的说出来.如果不准确的地方还请指正,谢谢. Flask是什么? Flask是基于Python编写的微 ...
- WTForms In Flask(WTForms在Flask中的应用)
WTForms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装wtforms : pip3/pip install wtforms 用户登录/注册示例 项 ...
- Flask实现简单的群聊和单聊
Flask是使用python写的一个简单轻量级的框架,今天我们使用Flask实现一个简单的单聊和群聊功能 . 主要思路 : 前端登录聊天室,聊天室信息包含用户的登录信息,相当于一个登录功能,会把这个信 ...
随机推荐
- Egret飞行模拟-开发记录02
1.Egret异步加载资源制作loading界面 使用EUI,EXML组件制作loading界面时,需要皮肤主题资源加载控制.即default.thm.json配置文件. 下一篇专门记录这部分. 2. ...
- python,运算符,基本数据类型
a = 'py' in 'python' b = 'py' not in 'python' print(a)print(b) in :判断一个前面一个字符串中的字符是否完整的出现在后面的字符串中,如果 ...
- Python课程第三天作业
一.统计⽂件数据中出现的的所有字符与该字符出现的个数(不区分⼤⼩写,标点与空格也算) ⽂件内容: hello friend, can you speak English! # 结果: { 'h': 1 ...
- CSS——Flex
任何一个容器都可以指定为Flexbox布局 .flex-container { display: -webkit-flex; /* Safari */ display: flex; } 行内元素可以指 ...
- SVN忽略已提交的文件(ignore,移出版本控制)
本文适用于已安装TortoiseSVN客户端的同学. 1.右键点击要忽略的文件夹或文件,鼠标移到“TortoiseSVN”,找到“Unversion and add to ignore list”,选 ...
- Exception in thread "main" java.lang.UnsupportedClassVersionError
Exception in thread “main" java.lang.UnsupportedClassVersionError这个报错是用高版本JDK编译项目或文件产生的class文件, ...
- c++数据类型漫谈
在计算机眼里所有数据都是0101,二进制才是物理世界的主宰,c++的数据类型相对其他高级语言是相对较细的,因为是继承C而来,但是c++为什么要设计这么多数据类型呢?因为人类难以理解二进制,这就是数据类 ...
- SQL注入--SQLMap过WAF
单引号被过滤情况: 空格.等号未被过滤情况: select被过滤情况: 以此类推,当sqlmap注入出现问题时,比如不出数据,就要检查对应的关键词是否被过滤. 比如空格被过滤可以使用space2com ...
- MM-移动类型
链接:SAP移动类型 移动类型 备注 业务类型 SAP中事务代码 备注 101 采购订单收货.生产订单收货 收货 migo CO11N顶层处理移动类型\跨工厂收货 102 采购订单收货冲销 收货 ...
- 使用css设置三角形
1.在开发中,有时候会用到一些小三角形来强调或者标记元素,这样以便区分不同的项目,然后把三角形绘制成一个比较明显的颜色,就达到效果了,那怎么才能画出三角形呢,之前我也不清楚,最近看到了有些网页在使用, ...