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

本文介绍了如何在Flask web框架中使用Form表单模型,并添加验证功能。通过示例代码展示了在`register.html`模板和`app.py`应用文件中的实现过程。在测试过程中遇到了`ImportError: cannot import name ‘ForkingMixIn’`的异常,可能是因为相关库的导入问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值