Flask框架WTForm表单用法示例


Posted in Python onJuly 20, 2018

本文实例讲述了Flask框架WTForm表单用法。分享给大家供大家参考,具体如下:

运行环境:

python2.7

flask  0.11

flask-wtf  0.14.2

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

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

示例:

from wtforms import Form
from flask import Flask,render_template,request,redirect
from wtforms.fields import core
from wtforms.fields import html5
from wtforms.fields import simple
from wtforms import validators
from wtforms import widgets
import sys
reload(sys)
sys.setdefaultencoding('utf8')
#python2.7 转码用的,避免显示中文为乱码
app = Flask(__name__,template_folder='templates')
app.debug=True
class LoginForm(Form):
  name = simple.StringField(
    label='用户名',  #前端显示中文
    validators=[
      validators.DataRequired(message='用户名不能为空'),
      validators.Length(min=6,max=18,message='用户名长度必须大于%(min)d且小于%(max)d')
    ],  #字段的验证规则
    widget=widgets.TextInput(), #页面上显示的标签
    render_kw={'class':'form=control'} #给上面插件生成的时候添加属性,比如bootstrap的属性
  )
  pwd = simple.PasswordField(
    label='密码',
    validators=[
      validators.DataRequired(message='密码不能为空'),
      validators.Length(min=8,message='用户名长度必须大于%(min)d'),
      validators.Regexp(regex="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*/&]{8,}",
               message='密码至少8个字符,至少1个大写字母,1个小写字母'),
    ],
    widget=widgets.PasswordInput(),
    render_kw={'class':'from-control'}
  )
#字段,内部包含正则表达式
@app.route('/login',methods=['GET','POST'])
def login():
  if request.method == 'GET':
    form = LoginForm()
    return render_template('login.html',form=form)
    #将form对象传给前端
  else:
    form = LoginForm(formdata=request.form) #从请求体from中取值
    if form.validate():  #验证
      print "用户提交数据通过,提交的值为:",form.data
    else:
      print form.errors  #错误信息
    return render_template('login.html',form=form)
@app.route('/')
def hello_world():
  return 'Hello World!'
if __name__ == '__main__':
  app.run()
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Title</title>
</head>
<body>
<h1>登陆</h1>
<form method="post">
  <p>{{ form.name.label }} {{ form.name }} {{ form.name.errors[0] }}</p>
  <p>{{ form.pwd.label }} {{ form.pwd }} {{ form.pwd.errors[0] }}</p>
  <input type="submit" value="提交">
</form>
</body>
</html>

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

希望本文所述对大家基于Flask框架的Python程序设计有所帮助。

Python 相关文章推荐
python控制台中实现进度条功能
Nov 10 Python
Python使用QQ邮箱发送Email的方法实例
Feb 09 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 Python
numpy中loadtxt 的用法详解
Aug 03 Python
Python闭包思想与用法浅析
Dec 27 Python
python简单验证码识别的实现方法
May 10 Python
Python发展简史 Python来历
May 14 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
Aug 22 Python
python构造函数init实例方法解析
Jan 19 Python
keras K.function获取某层的输出操作
Jun 29 Python
python两种获取剪贴板内容的方法
Nov 06 Python
Python 多线程处理任务实例
Nov 07 Python
Python使用pymongo模块操作MongoDB的方法示例
Jul 20 #Python
Python闭包函数定义与用法分析
Jul 20 #Python
Django rest framework工具包简单用法示例
Jul 20 #Python
Django 中使用流响应处理视频的方法
Jul 20 #Python
Python实现手写一个类似django的web框架示例
Jul 20 #Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 #Python
python实现求两个字符串的最长公共子串方法
Jul 20 #Python
You might like
PHP 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
解析coreseek for sphinx的使用
2013/06/21 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
2016/05/31 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
javascript 流畅动画实现原理
2009/09/08 Javascript
jQuery的css() 方法使用指南
2015/05/03 Javascript
JavaScript的9种继承实现方式归纳
2015/05/18 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python原始字符串(raw strings)用法实例
2014/10/13 Python
Python多线程编程(七):使用Condition实现复杂同步
2015/04/05 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
Python request设置HTTPS代理代码解析
2018/02/12 Python
Python从文件中读取指定的行以及在文件指定位置写入
2019/09/06 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
2020/06/17 Python
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
关于环保的建议书400字
2014/03/12 职场文书
有关环保的标语
2014/06/13 职场文书
婚礼新人答谢词
2015/01/04 职场文书
红歌会主持词
2015/07/02 职场文书
React配置子路由的实现
2021/06/03 Javascript
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python