Flask 三方组件 WTForms
WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证
from flask import Blueprint
from flask import request
from flask import render_template
from wtforms.fields import simple, core #simple:简单的字段
from wtforms import Form, validators #validators:校验条件 reg = Blueprint("reg", __name__) class RegForm(Form):
username = simple.StringField(
label="用户名:", #前端显示的字段
#default:None, #组件生成后的默认值
id="username",
render_kw={"class": " form-control col-sm-2 "}, #为标签创建属性
validators=[ #声明校验条件
validators.DataRequired(message="用户名不能为空"),
validators.Length(min=2, max=7, message="用户名不能小于%(min)d,不能大于%(max)d") ]
)
password = simple.PasswordField(
label="密码:",
id="password",
render_kw={"class": " form-control col-sm-2 "},
validators=[
validators.DataRequired(message="密码不能为空"),
validators.Length(min=6, max=16, message="用户名不能小于%(min)d,不能大于%(max)d") ]
)
repassword = simple.PasswordField(
label="确认密码",
render_kw={"class": " form-control col-sm-2 "},
validators=[
validators.EqualTo("password", message="密码不一致")
] ) email = simple.StringField(
label="邮箱",
render_kw={"class": " form-control col-sm-2 "},
validators=[
validators.Email(message="邮箱格式不符")
]
) gender = core.RadioField(
label="性别",
choices=[
(1, "男"),
(2, "女") ],
coerce=int ) hobby = core.SelectMultipleField(
label="爱好",
choices=[
(1, "抽烟"),
(2, "喝酒"),
(3, "烫头"),
],
coerce=int
) sub = simple.SubmitField(
label="注册", ) @reg.route("/reg", methods=["GET", "POST"])
def reg_func():
if request.method == "GET":
reg = RegForm() #实例化对象
return render_template("reg.html", reg=reg)
else:
new_reg = RegForm(formdata=request.form)
if new_reg.validate():
return "注册成功"
else:
return render_template("reg.html", reg=new_reg)
login.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title> </head>
<body>
<form action="" method="post" novalidate>
{{ lf.username.label }} {{ lf.username }} {{ lf.username.errors.0 }}
{{ lf.password.label }} {{ lf.password }} {{ lf.password.errors.0 }}
{{ lf.sub }}
</form>
</body>
</html>
reg.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title> </head>
<body>
<form action="" method="post">
{% for f in regf %}
{% if f.label == "登陆" %}
<p>{{ f }}{{ f.errors.0 }}</p>
{% else %}
<p>{{ f.label }}{{ f }}{{ f.errors.0 }}</p>
{% endif %}
{% endfor %} </form> </body>
</html>
Flask 三方组件 WTForms的更多相关文章
- Flask 三方组件 Flask-Session
使用 from flask import session, Flask from flask_session import Session from redis import Redis app = ...
- flask --- 03 .特殊装饰器, CBV , redis ,三方组件
一.特殊装饰器(中间件) 1.before_request 在请求进入视图函数之前 @app.before_request def look(): 2. after_request 在结束视图函数之后 ...
- flask中的wtforms使用
一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 二.简单使用wtfo ...
- flask框架----flask中的wtforms使用
一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 二.简单使用wtfo ...
- Flask学习【第7篇】:Flask中的wtforms使用
简介flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装 pip3 install wtforms 简单使用wtforms组件 用 ...
- Flask系列(七)Flask中的wtforms使用
一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 二.简单使用wtfo ...
- Flask - WTF和WTForms创建表单
目录 Flask - WTF和WTForms创建表单 一. Flask-WTF 1.创建基础表单 2.CSRF保护 3.验证表单 4.文件上传 5.验证码 二. WTForms 1. field字段 ...
- 基于python实现的三方组件----Celery
一.基于python实现的三方组件----Celery 1.作用 用于异步周期任务的处理 2.Celery的组成 (1)任务 app (2)记录任务的缓存(通常用redis或rabbitMQ) 任务记 ...
- Flask【第7篇】:Flask中的wtforms使用
flask中的wtforms使用 一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install w ...
随机推荐
- OpenAuth.Net.landv分支之旅开始制作CRM系统
OpenAuth.Net.landv分支之旅开始制作CRM系统 这个事件的由来是因为没有一个统一的会员卡平台系统,目前需要连接三家酒店会员系统,由于三家酒店使用了三种酒店管理系统,彼此之间的耦合低.三 ...
- EXcel vba 获取批注信息
Public Function pizhu(i As Range) pizhu = i.Cells.Comment.Text End Function EXcel VBA获取批注信息
- CentOS升级glibc-2.14
升级glibc-2.14用到的rpm https://pan.baidu.com/s/1v-Uk579TGM6498cExst6ow 先要安装gcc yum -y install gcc 执行: rp ...
- .net core 中的 DependencyInjection - IOC
概要:因为不知道写啥,所以随便找个东西乱说几句,嗯,就这样,就是这个目的. 1.IOC是啥呢? IOC - Inversion of Control,即控制反转的意思,这里要搞明白的就是,它是一种思想 ...
- 【Android】Tips for Android developer: “Conversion to Dalvik format failed: Unable to execute dex: null”
Androiddeveloper, I have met a strange problem when I want use a third party jar, it remained me tha ...
- Python_序列化和反序列化模块
序列化:将对象转换为可通过网络传输或可存储到本地磁盘的数据格式的转换过程,称为序列化,反之,称为反序列化 json: 用来实现不同语言,不同程序直接的信息交互,json支持所有高级语言之间的序列化交互 ...
- Linux批量清空当前目录中的日志文件
在Linux中,有时需要批量清空当前目录中的日志文件,同时还要保留日志文件. 其实一行shell命令就可以搞定,一起来看看吧. 在当前目录下,键入如下命令: for i in `find . -nam ...
- Codeforces 196E Opening Portals MST (看题解)
Opening Portals 我们先考虑如果所有点都是特殊点, 那么就是对整个图求个MST. 想在如果不是所有点是特殊点的话, 我们能不能也 转换成求MST的问题呢? 相当于我们把特殊点扣出来, 然 ...
- js防止安卓手机软键盘弹出挤压页面导致变形的方法
5防止安卓手机软键盘弹出挤压页面导致变形的方法 输入框定位在底部,手机端打开,输入框聚焦后软键盘打开为什么会瞬间自动关闭呢? 先看看问题: 1.原来是这样的: 2.在苹果手机里面是正常的: 3.到了安 ...
- NOI2018Day1T1 归程 并查集 kruskal kruskal重构树 倍增表 Dijkstra
原文链接https://www.cnblogs.com/zhouzhendong/p/NOI2018Day1T1.html 题目传送门 - 洛谷P4768 题意 给定一个无向连通图,有 $n$ 个点 ...