WTF表单
from flask import Flask, render_template, request,flash
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired,EqualTo
app = Flask(__name__)
app.secret_key = 'itheima'
"""
目的:实现一个简单的登录的逻辑处理
1.路由需要GET和POST两种请求方式-->需要判断请求方式
2。获取请求的参数
3.判断参数是否填写&密码是否相同
4。如果判断都没有问题,就返回一个success
"""
"""
给模板转递消息
flash-->需要对内容加密,因此需要设置secret_key,做加密消息的混淆
模板中需要遍历消息
"""
"""
使用WTF实现表单
自定义表单类
"""
class LoginForm(FlaskForm):
username = StringField(u'用户名',validators=[DataRequired()])
password = PasswordField(u'密码',validators=[DataRequired()])
password2 = PasswordField(u'确认密码', validators=[DataRequired(),EqualTo('passworld', '密码不一致')])
submit = SubmitField(u'提交')
@app.route('/form', methods=['GET', 'POST'])
def login():
login_form = LoginForm()
# 1.判断请求方式
if request.method == 'POST':
# 2.获取请求的参数
username=request.form.get('username')
password = request.form.get('password')
password2 = request.form.get('password2')
print(username)
# 3.验证参数,WTF可以一句话就实现所有校验
# 我们没有csrf_token
if login_form.validate_on_submit():
print(username,password)
return 'success'
else:
flash(u'参数有错误')
return render_template('index.html', form=login_form)
@app.route('/', methods=['GET,POST'])
def hello_world():
# request:请求对象-->获取请求方式,数据
# 判断请求方式
if request.method == 'POST':
# 2.获取请求参数
username = request.form.get('username')
print(username)
# 3.判断参数是否填写&密码是否相同
if not all(['username,password,password2']):
flash(u'参数不完整')
elif 'password' != 'password2':
flash(u'密码不一致')
else:
return 'success'
return render_template('index.html')
if __name__ == '__main__':
app.run()