python - 登录表单中未显示错误消息
问题描述
在我的登录页面上,当用户键入尚未注册或电子邮件格式无效的电子邮件地址时,它应该给他一条错误消息。但是当我提交表单时,我没有收到任何错误。我试图打印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>
解决方案
form.validate_on_submit() 应该是一个函数调用。你忘了括号。
推荐阅读
- flash - Adobe Air 错误 #3001:文件或目录访问被拒绝
- python - Python中的偏相关
- docker - 如何在离线环境中同时使用 swagger-editor 和 swagger-codegen docker 镜像
- r - geom_dot 为不同的组提供不同的点大小并将一个放在前面
- r - R - 从现有列值创建和命名数据框
- android - 用 constrainLayout 替换滚动视图中的加权线性布局
- python - 类实例是否在后台持续存在?
- android - 如何区分 SQLite Android 中的相同 Id 值
- c# - SqlDataSource 超时
- c# - 如何确定 IResourceFilter 中的 Controller 名称和 Action 名称?