#demo1文件
#coding=utf-8
from flask import Flask,render_template ,request #render_template为模板
from config import Config
#导入flask_wtf提供的表单
from flask_wtf import FlaskForm
#导入表单类提供的字段
from wtforms import StringField,PasswordField,SubmitField
#导入表单类提供的验证函数
from wtforms.validators import DataRequired,EqualTo
app = Flask(__name__)
#使用配置文件
app.config.from_object(Config)
# 使用CSRF设密钥
app.config['SECRET_KEY'] = 'python24'
#需求:注册页面
#自定义表单类
class Form(FlaskForm):
# 定义表单字段/input/password/submit
user = StringField(validators=[DataRequired()])
pswd = PasswordField(validators=[DataRequired(),EqualTo('psed2')])
psw2 = PasswordField(validators=[DataRequired()])
submit = SubmitField(label=u'注册')
@app.route('/',method=['GET','POST'])
def demo2():
#实例化表单类对象
form = Form()
#form.validata_on_submit()函数会依次调用验证器,验证器条件满足,会查看表单页面中是否设置csrf_token
if form.validata_on_submit():
# 获取表单数据
us = form.user.data
ps = form.pswd.data
ps2 = form.pswd2.data
print us,ps,ps2
print form.validate_on_submit()
return render_template('login.html',form=form)
@app.route('/demo1',method=['GET','POST'])
def demo1():
#获取表单数据
user = request.form.get('user')
pswd = request.form.get('pswd')
return render_template('login.html')
if __name__=='__main__':
app.run()
"""demo1同级目录templates下的login.html"""
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{request.merhod}}</title>
</head>
<body>
<h1>注册</h1>
<form method="post">
{# csrf_token的本质作用就是混淆发送给后端的参数#}
{{form.csrf_token}}
<p>{{form.user}}</p>
<p>{{form.pswd}}</p>
<p>{{form.pswd2}}</p>
<p>{{form.submit}}</p>
</form>
<h2>登陆</h2>
{#手写input表单,登陆页面#}
<form method="post">
<p><input type = "text" name="user" placehoder="User" size="35"></p>
<p><input type = "password" name="pswd" placehoder="Password" size="35"></p>
<p><input type="submit"></p>
</form>
</body>
</html>
"""demo1同级文件config.py"""
class Config:
DEBUG = True