一、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>

最新文章

  1. FizzBuzzWhizz游戏的高效解法
  2. iis6|iis7|配置URLRewriter|64位操作系统下|.net2.0|.net4.0|配置URLRewriter|Web.config配置详情
  3. Lucene查询索引(分页)
  4. win8 hyper-v 禁用不必卸载虚拟机
  5. hadoop笔记之Hive入门(Hive的体系结构)
  6. Qt下如何修改文件的时间(全平台修改)
  7. Linux 默认日志类型
  8. Zabbix WMI监控
  9. jquery 的鼠标事件/淡入淡出/绑定
  10. 装完Centos7提示Initial setup of CentOS Linux 7 (core)
  11. 逆向---02.je &amp; jmp &amp; jnz 、OD调试
  12. Jquery 属性选择器&amp;设置元素属性
  13. python做数据分析pandas库介绍之DataFrame基本操作
  14. Django的跨域请求
  15. php把采集内容中图片地址下载并替换成本地地址
  16. 相邻行列相互影响的状态类问题(类似状压dp的搜索)(POJ3279)
  17. hdu2571 命运 2016-09-11 16:54 53人阅读 评论(0) 收藏
  18. [示例] Firemonkey ListView 仿 iPhone X 浏海
  19. struts2第三天——值栈
  20. 【NOI2018】

热门文章

  1. Linux云主机(离线)搭建本地yum源
  2. VS2019/VS2017怎么更改visual studio新建项目的默认路径
  3. vs2010+ARX2012向导添加mfc支持类出现Error in default.htm PopulateDialogIDs():
  4. jquery json对象转换
  5. [New!!!]欢迎大佬光临本蒟蒻的博客(2019.11.27更新)
  6. TCP/IP学习笔记3--传输方式的分类
  7. Docker的基础教程(基于CentOS)
  8. spring boot 初始
  9. windows server系统打印服务配置
  10. poj 3744 题解