# coding:utf8
from flask import render_template
from flask.ext.wtf import FlaskForm
from wtforms import *
from wtforms.validators import DataRequired,EqualTo
"""
flask_WTF表单: 通过字段的方式显示界面,通过函数验证表单中的值
好处: 维护更加方便, 提供csrf验证
使用流程:
1. 属于flask中的扩展包,需要安装
2. 定义类,继承自FlaskForm
3. 在类中编写字段,编写函数验证字段
4. 创建表单类,渲染到页面中
注意点:
1. wtform表单提供了csrf验证机制
2. csrf_token的生成依赖SECRET_KEY
3. 通过validate_on_submit验证字段中的验证信息,会对'POST', 'PUT', 'PATCH', 'DELETE'提交方式校验
4. 获取表单中内容的方法: form.字段.data
"""""
from flask import Flask
app=Flask(__name__)
app.config['SECRET_KEY']='jdlfsdp'
class Myform(FlaskForm):
username=StringField(u'用户名',validators=[DataRequired()])
password = PasswordField(u'密码', validators=[DataRequired()])
repassword = PasswordField(u'确认密码', validators=[DataRequired(), EqualTo('password')])
submit = SubmitField(u'提交')
@app.route('/')
def index():
form=Myform()
return render_template('index03.html',form=form)
@app.route('/register',methods=['POST']) #这个methods=['POST'] 千万不能漏
def register():
# 1.获取参数
form = Myform()
# 1.获取参数
# 2.校验参数, validate_on_submit验证字段中的验证信息
if form.validate_on_submit():
username = form.username.data
password = form.password.data
repassword = form.repassword.data
print username
print password
print repassword
return '成功'
return '失败'
if __name__ == '__main__':
app.run(debug=True)
在创建表单的时候,我们应该知道,在程序中创建密钥。
app.config['SECRET_KEY']='jdlfsdp' ,用来生成session的,这个session对于form的表单的生成有重要影响。
同时在是生成表单时,,要记得写上{{ form.csrf_token }}。才能有效。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/register" method="post">
{{ form.csrf_token }}
{{ form.username.label }}
{{ form.username }}
{{ form.password.label }}
{{ form.password }}
{{ form.repassword.label }}
{{ form.repassword }}
{{ form.submit }}
</form>
</body>
</html>