本文实例讲述了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