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实现简单ftp客户端的方法
Jun 28 Python
Python打印斐波拉契数列实例
Jul 07 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
python删除本地夹里重复文件的方法
Nov 19 Python
78行Python代码实现现微信撤回消息功能
Jul 26 Python
对python条件表达式的四种实现方法小结
Jan 30 Python
对Python3使运行暂停的方法详解
Feb 18 Python
Python绘制股票移动均线的实例
Aug 24 Python
Python逐行读取文件内容的方法总结
Feb 14 Python
Python2与Python3关于字符串编码处理的差别总结
Sep 07 Python
python字符串常规操作大全
May 02 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 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
SMARTY学习手记
2007/01/04 PHP
php获取mysql版本的几种方法小结
2008/03/25 PHP
PHP网络操作函数汇总
2015/05/18 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
解决jquery appaend元素中id绑定事件失效的问题
2017/09/12 jQuery
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
解决Vue2.0中使用less给元素添加背景图片出现的问题
2018/09/03 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
Node.js中package.json中库的版本号(~和^)
2019/04/02 Javascript
JavaScript 实现同时选取多个时间段的方法
2019/10/17 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
python中的字典详细介绍
2014/09/18 Python
详解Python循环作用域与闭包
2019/03/21 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
Python.append()与Python.expand()用法详解
2019/12/18 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
高校教师思想汇报
2014/01/11 职场文书
学校评语大全
2014/05/06 职场文书
2014年基层党支部工作总结
2014/12/04 职场文书
小学家长通知书评语
2014/12/31 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
毕业设计致谢词
2015/05/14 职场文书
复兴之路展览观后感
2015/06/02 职场文书
婚礼答谢词范文
2015/09/29 职场文书
云服务器部署 Web 项目的实现步骤
2022/06/28 Servers