异常:ImportError: cannot import name ‘ForkingMixIn’
示例
(register.html)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="POST">
{{ form.csrf_token }}
{% for msg in get_flashed_messages() %}
<p>{{msg}}</p>
{% endfor %}
<p>{{ form.username.label }}:</p>{{ form.username }}
{% for msg in form.username.errors %}
{{msg}}
{% endfor %}
<p>{{ form.password.label }}:</p>{{ form.password }}
{% for msg in form.password.errors %}
{{msg}}
{% endfor %}
<p>{{ form.password2.label }}:</p>{{ form.password2 }}
{% for msg in form.password2.errors %}
{{msg}}
{% endfor %}
<p>{{ form.submit }}</p>
</form>
</body>
</html>
(app.py)
# _*_ coding:utf-8 _*_
from flask import Flask, render_template, redirect, url_for, session, flash
from flask_wtf import Form
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, EqualTo
app = Flask(__name__)
app.config["SECRET_KEY"] = "abcdefgh12344ijklmn904opq"
@app.route("/")
def index():
return redirect(url_for("register"))
class RegisterForm(Form):
"""定义表单类"""
username = StringField(label=u"用户名", validators=[DataRequired(u"用户名不能为空")])
password = PasswordField(label=u"密码", validators=[DataRequired(u"密码不能为空")])
password2 = PasswordField(label=u"验证密码", validators=[DataRequired(u"验证密码不能为空"), EqualTo("password", u"两次密码不一样")])
submit = SubmitField(label=u"提交")
@app.route("/register", methods=["GET", "POST"])
def register():
form = RegisterForm()
if form.validate_on_submit():
"""验证通过"""
username = form.username.data
password = form.password.data
passwor2d = form.password2.data
session["username"] = username
return redirect(url_for("welcome"))
else:
flash("欢迎注册!")
return render_template("register.html", form=form)
@app.route("/welcome")
def welcome():
username = session.get("username", "Stranger")
return "%s 注册成功!" % username
if __name__ == '__main__':
app.run(debug=True)