from flask import Flask, redirect, request, url_for, render_template, session
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, EqualTo
# 创建flask应用对象
# __name__ 代表当前模块名称
# flask以当前目录为总目录,static目录为静态目录,templates为模版目录
app = Flask(__name__)
app.config["SECRET_KEY"] = "yang"
# 定义表单模型类
class RegisterForm(FlaskForm):
# DataRequired 设置数据必填
username = StringField(label=u"用户名:", validators=[DataRequired(u"请输入用户名")])
password = PasswordField(label=u"密码", validators=[DataRequired("请输入密码")])
password2 = PasswordField(label="确认密码", validators=[DataRequired("请输入秘密"), EqualTo("password", "两次密码不一致")])
submit = SubmitField(label=u"注册")
@app.route("/")
def index():
user_info = session.get("user_info")
return str(user_info)
@app.route("/register", methods=["POST", "GET"])
def register():
# 如果是post,会把前端返回的数据放到form中
form = RegisterForm()
# 验证表单数据是否合格
if form.validate_on_submit():
# 验证合格, 提取数据
username = form.username.data
password = form.password.data
print("username: %s, password=%s" % (username, password))
session["user_info"] = {"username": username, "password": password}
return redirect(url_for("index"))
return render_template("register.html", form = form)
if __name__ == '__main__':
# 启动应用程序
app.run(port=8083,debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post">
{{form.csrf_token}}
{{form.username.label}}
<p>{{form.username}}</p>
{% for msg in form.username.errors %}
<p>{{msg}}</p>
{% endfor %}
{{form.password.label}}
<p>{{form.password}}</p>
{% for msg in form.password.errors %}
<p>{{msg}}</p>
{% endfor %}
{{form.password2.label}}
<p>{{form.password2}}</p>
{% for msg in form.password2.errors %}
<p>{{msg}}</p>
{% endfor %}
{{form.submit}}
</form>
</body>
</html>