Flask WTForm表单的使用
运行环境:
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表单的使用相关推荐
- Flask Web表单
title: flask学习笔记 subtitle: 3. flask Web表单 date: 2018-12-14 10:17:28 --- Web表单 HTML表单是用户和web站点或应用程序之间 ...
- Flask——创建表单模型类与模板使用
首先引入表单扩展Flask-WTF: pip install Flask-WTF 使用Flask-WTF扩展可以验证后端接受到的信息,防止恶意攻击. WTForms支持的HTML标准字段 字段对象 说 ...
- Flask入门 表单Flask-wtf form原生与Bootstrap渲染(七)
(1) 原生的表单 模板页面,form表单form.html <form action="{{ url_for('/check/') }}" method='post'> ...
- wtform 表单示例
用户注册 from flask import Flask, render_template, request, redirect from wtforms import Form from wtfor ...
- python flask 表单提交_python中flask应用(表单处理)
本篇文章给大家带来的内容是关于python中flask应用(表单处理),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.为什么使用Flask-WTF? request对象公开了所有 ...
- Flask中的表单处理以及邮件发送
flask中集成的web表单处理 为什么使用Flask-WTF? request对象公开了所有客户端发送的请求信息.特别是request.form可以访问POST请求提交的表单数据. 尽管Flask的 ...
- 【flask】04.wtf表单的全部用法实现
学到了flask wtf 表单,网上想查看一下wtf表单的全部用法,结果都是StringFiled SubmitField PasswordField的用法, 反正都是学习,结合源码和借鉴(抄袭~~) ...
- python-flask(二)集成bootstrap、集成web表单、集成邮件发送
文章目录 一.flask集成bootstrap 1. 什么是Bootstrap? 2. Flask中如何集成Bootstrap? 3. Flask-Bootstrap实现了什么? 二.Flask中集成 ...
- WEB前端 ---- 学习第二天(表格、表单、css等)
今日内容概要 表格标签(只要是展视数据 一般都可以使用表格标签) 表单标签(重要:获取前端用户数据发送给后端) 后端框架基本使用(flask) css层叠样式表(选择器) 表格标签 数据示例: use ...
最新文章
- CTFshow 信息收集 web13
- python交互式终端是怎么实现的_python中的脚本和交互式终端客户端
- 目前我国家庭计算机用户接入因特网的下述,目前我国家庭计算机用户接入因特网的下述几种方法中,速度最快的是________ 。...
- Java线程:线程的同步-同步方法
- 关于H5工程师那些日常必需工具
- networkx edge 属性_python图算法库Networkx笔记-第一章
- Java进阶必备,人人都能听懂的JVM
- Java锁的升降级及synchoronized优化
- Java面试通关要点汇总整理
- 做有中国特色的项目管理
- 笔记 || css字体word字体大小对照表
- 八数码难题(启发式搜索)
- 基于javaweb+jsp的健康体检信息管理系统(JavaWeb MySQL JSP Bootstrap Servlet SSM SpringBoot)
- android 如何绕过签名校验
- 光纤中的多种光学模式芯径_光纤的结构是什么?种类有哪些?该怎么选择?
- 运行环信Android Demo常见问题以及语音消息播放声音小的解决方法
- 交叉编译器 arm-linux-gnueabi,arm-linux-gnueabihf,arm-none-linux等的区别
- 聊聊“元宇宙” —— 设备篇
- FTP自动上传/下载对应目下多个人间
- 小笨霖英语笔记本七十七
热门文章
- CCIE-LAB-第四篇-OSPFv2+SHA384+BFD
- 【CodeForces - 289E 】Polo the Penguin and XOR operation (数学,异或,贪心)
- 【CodeForces - 1042A】Benches (优先队列,思维模拟,maxmin问题)
- 【CodeForces - 570A】Elections(模拟,水题)
- 重读经典:《An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale》
- 从零实现一个3D目标检测算法(2):点云数据预处理
- 6.深度学习练习:Initialization
- oracle查效能,【DataGuard】Oracle 11g物理Active Data Guard实时查询(Real-time query)特性...
- java导出hbase表数据_通用MapReduce程序复制HBase表数据
- 项目积压需求项目计划_需求变更频繁,项目经理如何做好需求管理?