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的更多相关文章

  1. Flask 三方组件 Flask-Session

    使用 from flask import session, Flask from flask_session import Session from redis import Redis app = ...

  2. flask --- 03 .特殊装饰器, CBV , redis ,三方组件

    一.特殊装饰器(中间件) 1.before_request 在请求进入视图函数之前 @app.before_request def look(): 2. after_request 在结束视图函数之后 ...

  3. flask中的wtforms使用

    一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 二.简单使用wtfo ...

  4. flask框架----flask中的wtforms使用

    一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 二.简单使用wtfo ...

  5. Flask学习【第7篇】:Flask中的wtforms使用

    简介flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装 pip3 install wtforms 简单使用wtforms组件 用 ...

  6. Flask系列(七)Flask中的wtforms使用

    一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 二.简单使用wtfo ...

  7. Flask - WTF和WTForms创建表单

    目录 Flask - WTF和WTForms创建表单 一. Flask-WTF 1.创建基础表单 2.CSRF保护 3.验证表单 4.文件上传 5.验证码 二. WTForms 1. field字段 ...

  8. 基于python实现的三方组件----Celery

    一.基于python实现的三方组件----Celery 1.作用 用于异步周期任务的处理 2.Celery的组成 (1)任务 app (2)记录任务的缓存(通常用redis或rabbitMQ) 任务记 ...

  9. Flask【第7篇】:Flask中的wtforms使用

    flask中的wtforms使用 一.简单介绍flask中的wtforms WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install w ...

随机推荐

  1. jexus linux x64 [专业版] 安装和配置https

    一.环境 操作系统:centOs7-x64 二.准备工作 购买SSL/TLS证书 三.部署 1.首先查看“/lib”或“/usr/lib”等系统库文件夹中是否有SSL库文件的名字,该文件名应该是“li ...

  2. XmlSerializer 实现序列化CDATA

    [XmlIgnore] public string GuestRemarks { get; set; } [XmlElement("GuestRemarks")] public X ...

  3. 【Android】Android 代码判断当前设备是否为模拟器

    [Android]Android 代码判断当前设备是否为模拟器 方法比较简单,直接粘贴代码 //判断当前设备是否是模拟器.如果返回TRUE,则当前是模拟器,不是返回FALSE public stati ...

  4. 咸鱼入门到放弃1--JDBC

    JDBC参考微博https://www.cnblogs.com/surfcater/p/10224502.html 主要内容 1.JDBC相关概念 2.JDBC常用接口 driver connecti ...

  5. Codeforces 1012D AB-Strings 贪心

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF1012D.html 题目传送门 - CF1012D 题意 给定字符串 $s,t$ ,其中只包含小写字母 $a ...

  6. Substrings kmp

    Problem Description You are given a number of case-sensitive strings of alphabetic characters, find ...

  7. day 54 jQuery, part-1

    上节内容回顾: 1. 前情回顾 1. DOM对象和BOM对象 1. BOM 对象 --> window location location.href location.href="ht ...

  8. day4 字符串的操作

    今天是第四天,一如既往的每天都有不会做的内容,然后还是那种你使劲的绞尽脑汁都想不出来的问题,而且还得是别人提示着,讲着,演示着才能明白的,过后自己还得使劲捉摸才能慢慢吃透.一开始还挺顺利的,还以为自己 ...

  9. C语言实现链栈

    我自己写的代码部分: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct ...

  10. iOS应用 数据存储方式 (一)

    沙盒是每个应用程序的空间,每个应用程序只能访问自己的文件夹,不可以跨越,访问别的程序的文件夹,这个文件夹就是该应用程序的沙盒. 沙盒中包括以下几个文件夹: 1.应用程序包:(Layer)包含了所有资源 ...