本文实例讲述了Flask框架WTForm表单用法。分享给大家供大家参考,具体如下:
运行环境:
python2.7
flask 0.11
flask-wtf 0.14.2
wtform能够通过一个类定义一些字段,这些字段会在前端生成标签,并且通过设置字段的验证规则,自动判断前端输入数据的格式。
一般用于用户登录,用户注册等信息录入。
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
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() |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<!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程序设计有所帮助。
原文链接:http://www.cnblogs.com/ArmoredTitan/p/9005864.html