运行环境:

python2.7

flask  0.11

flask-wtf  0.14.2

wtform能够通过一个类定义一些字段,这些字段会在前端生成标签,并且通过设置字段的验证规则,自动判断前端输入数据的格式。

一般用于用户登录,用户注册等信息录入。

 1 from wtforms import Form
 2 from flask import Flask,render_template,request,redirect
 3 from wtforms.fields import core
 4 from wtforms.fields import html5
 5 from wtforms.fields import  simple
 6 from wtforms import validators
 7 from wtforms import widgets
 8 import sys
 9 reload(sys)
10 sys.setdefaultencoding('utf8')
11 #python2.7 转码用的,避免显示中文为乱码
12
13
14 app = Flask(__name__,template_folder='templates')
15 app.debug=True
16
17 class LoginForm(Form):
18     name = simple.StringField(
19         label='用户名',   #前端显示中文
20         validators=[
21             validators.DataRequired(message='用户名不能为空'),
22             validators.Length(min=6,max=18,message='用户名长度必须大于%(min)d且小于%(max)d')
23         ],    #字段的验证规则
24         widget=widgets.TextInput(), #页面上显示的标签
25         render_kw={'class':'form=control'} #给上面插件生成的时候添加属性,比如bootstrap的属性
26     )
27     pwd = simple.PasswordField(
28         label='密码',
29         validators=[
30             validators.DataRequired(message='密码不能为空'),
31             validators.Length(min=8,message='用户名长度必须大于%(min)d'),
32             validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*/&]{8,}",
33                               message='密码至少8个字符,至少1个大写字母,1个小写字母'),
34
35         ],
36         widget=widgets.PasswordInput(),
37         render_kw={'class':'from-control'}
38     )
39 #字段,内部包含正则表达式
40
41 @app.route('/login',methods=['GET','POST'])
42 def login():
43     if request.method == 'GET':
44         form = LoginForm()
45         return render_template('login.html',form=form)
46         #将form对象传给前端
47     else:
48         form = LoginForm(formdata=request.form)  #从请求体from中取值
49         if form.validate():   #验证
50             print "用户提交数据通过,提交的值为:",form.data
51         else:
52             print form.errors    #错误信息
53         return render_template('login.html',form=form)
54
55
56
57 @app.route('/')
58 def hello_world():
59     return 'Hello World!'
60
61
62 if __name__ == '__main__':
63     app.run()

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="x-ua-compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1">
 7     <title>Title</title>
 8 </head>
 9 <body>
10 <h1>登陆</h1>
11 <form method="post">
12     <p>{{ form.name.label }}  {{ form.name }} {{ form.name.errors[0] }}</p>
13     <p>{{ form.pwd.label }}  {{ form.pwd }} {{ form.pwd.errors[0] }}</p>
14     <input type="submit" value="提交">
15 </form>
16 </body>
17 </html>

在前端,直接通过Form对象来取字段中的值,以及该值中的错误信息,错误信息我们一般取第一个即可,已经能够告诉用户信息错误了。

转载于:https://www.cnblogs.com/ArmoredTitan/p/9005864.html

Flask WTForm表单的使用相关推荐

  1. Flask Web表单

    title: flask学习笔记 subtitle: 3. flask Web表单 date: 2018-12-14 10:17:28 --- Web表单 HTML表单是用户和web站点或应用程序之间 ...

  2. Flask——创建表单模型类与模板使用

    首先引入表单扩展Flask-WTF: pip install Flask-WTF 使用Flask-WTF扩展可以验证后端接受到的信息,防止恶意攻击. WTForms支持的HTML标准字段 字段对象 说 ...

  3. Flask入门 表单Flask-wtf form原生与Bootstrap渲染(七)

    (1) 原生的表单 模板页面,form表单form.html <form action="{{ url_for('/check/') }}" method='post'> ...

  4. wtform 表单示例

    用户注册 from flask import Flask, render_template, request, redirect from wtforms import Form from wtfor ...

  5. python flask 表单提交_python中flask应用(表单处理)

    本篇文章给大家带来的内容是关于python中flask应用(表单处理),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.为什么使用Flask-WTF? request对象公开了所有 ...

  6. Flask中的表单处理以及邮件发送

    flask中集成的web表单处理 为什么使用Flask-WTF? request对象公开了所有客户端发送的请求信息.特别是request.form可以访问POST请求提交的表单数据. 尽管Flask的 ...

  7. 【flask】04.wtf表单的全部用法实现

    学到了flask wtf 表单,网上想查看一下wtf表单的全部用法,结果都是StringFiled SubmitField PasswordField的用法, 反正都是学习,结合源码和借鉴(抄袭~~) ...

  8. python-flask(二)集成bootstrap、集成web表单、集成邮件发送

    文章目录 一.flask集成bootstrap 1. 什么是Bootstrap? 2. Flask中如何集成Bootstrap? 3. Flask-Bootstrap实现了什么? 二.Flask中集成 ...

  9. WEB前端 ---- 学习第二天(表格、表单、css等)

    今日内容概要 表格标签(只要是展视数据 一般都可以使用表格标签) 表单标签(重要:获取前端用户数据发送给后端) 后端框架基本使用(flask) css层叠样式表(选择器) 表格标签 数据示例: use ...

最新文章

  1. CTFshow 信息收集 web13
  2. python交互式终端是怎么实现的_python中的脚本和交互式终端客户端
  3. 目前我国家庭计算机用户接入因特网的下述,目前我国家庭计算机用户接入因特网的下述几种方法中,速度最快的是________ 。...
  4. Java线程:线程的同步-同步方法
  5. 关于H5工程师那些日常必需工具
  6. networkx edge 属性_python图算法库Networkx笔记-第一章
  7. Java进阶必备,人人都能听懂的JVM
  8. Java锁的升降级及synchoronized优化
  9. Java面试通关要点汇总整理
  10. 做有中国特色的项目管理
  11. 笔记 || css字体word字体大小对照表
  12. 八数码难题(启发式搜索)
  13. 基于javaweb+jsp的健康体检信息管理系统(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot)
  14. android 如何绕过签名校验
  15. 光纤中的多种光学模式芯径_光纤的结构是什么?种类有哪些?该怎么选择?
  16. 运行环信Android Demo常见问题以及语音消息播放声音小的解决方法
  17. 交叉编译器 arm-linux-gnueabi,arm-linux-gnueabihf,arm-none-linux等的区别
  18. 聊聊“元宇宙” —— 设备篇
  19. FTP自动上传/下载对应目下多个人间
  20. 小笨霖英语笔记本七十七

热门文章

  1. CCIE-LAB-第四篇-OSPFv2+SHA384+BFD
  2. 【CodeForces - 289E 】Polo the Penguin and XOR operation (数学,异或,贪心)
  3. 【CodeForces - 1042A】Benches (优先队列,思维模拟,maxmin问题)
  4. 【CodeForces - 570A】Elections(模拟,水题)
  5. 重读经典:《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》
  6. 从零实现一个3D目标检测算法(2):点云数据预处理
  7. 6.深度学习练习:Initialization
  8. oracle查效能,【DataGuard】Oracle 11g物理Active Data Guard实时查询(Real-time query)特性...
  9. java导出hbase表数据_通用MapReduce程序复制HBase表数据
  10. 项目积压需求项目计划_需求变更频繁,项目经理如何做好需求管理?