flask框架表单模型Form并添加验证

异常: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)


测试

1

猜你喜欢

转载自blog.csdn.net/weixin_40775077/article/details/84894077