首页 > 解决方案 > 登录表单中未显示错误消息

问题描述

在我的登录页面上,当用户键入尚未注册或电子邮件格式无效的电子邮件地址时,它应该给他一条错误消息。但是当我提交表单时,我没有收到任何错误。我试图打印form.errors,但我得到了一个空字典。我在注册时使用了相同的逻辑,它在那里工作。

表格.py

class LoginForm(FlaskForm):
    email = StringField("", validators=[DataRequired(), Email()])
    password = PasswordField("", validators=[DataRequired()])
    submit = SubmitField("LOG IN")

视图.py

@users.route("/login", methods=["GET", "POST"])
def login():
    form = LoginForm()
    if form.validate_on_submit:
        user = User.query.filter_by(email=form.email.data).first()
        if user is not None and user.check_password(form.password.data):
            login_user(user)
            return redirect(url_for("core.home", user=user))
    return render_template("login.html", form=form, total_quantity=session["total_quantity"])

登录.html

<div id="login-container">
    <h5>LOG IN</h5>
    <p>Please enter your e-mail and password:</p>
    <form method="POST">
        {{form.hidden_tag()}}
        {{form.email.label()}} {{form.email(placeholder=" Email", id="email")}}<br>
            {% for error in form.email.errors %}
                <span style="color: #e50000;">{{ error }}</span><br>
            {% endfor %}
        {{form.password.label()}} {{form.password(placeholder=" Password", id="password")}}<br>
            {% for error in form.password.errors %}
                <span style="color: #e50000;">{{ error }}</span><br>
            {% endfor %}
        {{form.submit(id="login")}}
        <p>Not a member!
            <a class="nav-link d-md-inline" href="{{ url_for('users.registration') }}" id="logreg-link"> REGISTER</a>
        </p>
    </form>
</div>

标签: pythonvalidationflask

解决方案


form.validate_on_submit() 应该是一个函数调用。你忘了括号。


推荐阅读