Flask之WTfroms组件
一、WTfroms简介
WTForms插件是类似于django的form组件的插件,可以帮我们写标签,校验数据等。
二、安装与使用
安装:
pip install WTForms
使用:
from wtforms import Form
from wtforms.fields import simple, core
from wtforms import validators class RegForm(Form): username = simple.StringField(
label="用户名",
validators=[
validators.DataRequired(message="数据不能为空!"),
validators.length(min=4, max=6, message="用户名不能少于4位且不能大于6位")
],
render_kw={"class": "form-control", "pp": ""}
)
password = simple.PasswordField(
label="密码",
validators=[
validators.DataRequired(message="密码不能为空!"),
validators.length(min=6, max=16, message="密码不能少于6位且不能大于6位"),
validators.Regexp(regex="\d+", message="密码必须是数字")
],
render_kw={"class": "form-control", "pp": ""}
)
re_password = simple.PasswordField(
label="确认密码",
validators=[
validators.EqualTo(fieldname="password", message="两次密码不一致")
],
render_kw={"class": "form-control"}
)
gender = core.RadioField(
label="性别",
validators=[
validators.DataRequired(message="请先选择一个性别!")
],
choices=((1, "男"), (2, "女")),
coerce=int,
# default=1,
)
hobby = core.SelectMultipleField(
label="爱好",
choices=((1, "游戏"), (2, "妹子"), (3, "汉子")),
coerce=int,
default=[1, 2],
render_kw={"class": "form-control"}
) @app.route("/register", methods=("GET", "POST"))
def reg():
form_obj = RegForm()
if request.method == "POST":
print(request.form)
form_obj = RegForm(request.form)
if form_obj.validate():
ers = request.form.to_dict()
print(ers)
print(form_obj.data)
return "注册成功"
return render_template("reg.html", form_obj=form_obj) if __name__ == '__main__':
app.run(debug=True)
前端:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"
integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<form action="" method="post" novalidate>
{% for field in form_obj %}
<div class="form-group">
{{ field.label }}
{{ field }}
{{ field.errors.0 }}
</div>
{% endfor %}
<div>
<button class="btn btn-primary btn-lg btn-block">注册</button>
</div>
</form>
</div>
</div>
</div> </body>
</html>
Flask之WTfroms组件的更多相关文章
- Flask第三方工具组件介绍
flask-wtf组件flask-login组件flask-session组件flask-sqlalchemy组件flask-script组件flask-cache组件flask-assets组件fl ...
- flask框架----flask-session组件
简介 flask-session是flask框架的session组件,由于原来flask内置session使用签名cookie保存,该组件则将支持session保存到多个地方,如: redis:保存数 ...
- Python Flask wtfroms组件
简介 WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装: pip3 install wtforms 用户登录注册示例 1. 用户登录 当用户登录时候,需要对 ...
- flask之三方组件
Flask-session Flask-session跟框架自带的session有什么区别呢 框架自带的session是通过请求上下文~放入到Local中的~那如果我们想把session放入别的地方怎 ...
- Flask框架—flask_sqlalchemy组件使用
一.flask_sqlalchemy组件 我们之前学过SQLAlchemy,一个独立的数据库关系对象映射,其实在flask中也有官方认可的第三方SQLAlchemy组件,用于处理flask中对象关系映 ...
- 8、flask之flask-script组件
Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...
- flask之flask-script组件
Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...
- flask框架----flask-script组件
Flask Script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell,设置数据库的脚本,cronjobs,及其他运行在web应用之外的命令行任 ...
- 1.7 flask 的组件 wtfroms使用
2019-1-7 17:59:37 还有两天左右flask就结束啦!昨晚逛了一下吾爱破解还有慕课,发现有三个意外项目, Django生鲜项目,flask电影网站项目,vue美团网项目,都保存百度云啦, ...
随机推荐
- centos6.10中部署percona-mysql双实例的方法
centos6.10中部署percona-mysql双实例的方法 数据库的同步关系:192.168.11.53(master) --> slave(192.168.10.189) --> ...
- Pycharm连接远程服务器并进行代码上传+远程调试
前提:需要有一个远程服务器,知道他的ip.port.user.password 一.连接远程服务器 进入配置页面 Pycharm菜单栏,如下图所示,依次点击 Tools -> Deploymen ...
- [LeetCode] 531. Lonely Pixel I 孤独的像素 I
Given a picture consisting of black and white pixels, find the number of black lonely pixels. The pi ...
- Unreal Engine 4 中的 UI 优化技巧
转自:https://mp.weixin.qq.com/s/bybEHM9tF-jBPxxqXfrPOQ## Unreal Open Day 2017 活动上 Epic Games 开发者支持工程师郭 ...
- (生鲜项目)01. Vue环境搭建
第一步: nodejs安装 https://nodejs.org/en/download/ 说明安装成功 第二步: cnpm 由于npm需要很多的依赖包,这些包下载都很慢,所以就有了cnpm : ht ...
- (转)深入浅出Redis-redis哨兵集群
背景:对于后台开发,需要了解与集群相关的工作. 深入浅出Redis-redis哨兵集群 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentin ...
- LeetCode 537. 复数乘法(Complex Number Multiplication)
537. 复数乘法 537. Complex Number Multiplication 题目描述 Given two strings representing two complex numbers ...
- LeetCode 343. 整数拆分(Integer Break) 25
343. 整数拆分 343. Integer Break 题目描述 给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化. 返回你可以获得的最大乘积. 每日一算法2019/5/2 ...
- LeetCode 82. 删除排序链表中的重复元素 II(Remove Duplicates from Sorted List II)
82. 删除排序链表中的重复元素 II 82. Remove Duplicates from Sorted List II 题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有 ...
- GhostScript说明
关于ghostscript(以下简称gs).Gs是一个地下工作者,一般用户不熟悉它,因为它上不和用户直接打交道,下不直接接触打印机.但是在打印工作中它却扮演了极为重要的解色. 一般从用户常见文件如图片 ...