有没有办法在 Django 中显示登录错误?

Posted

技术标签:

【中文标题】有没有办法在 Django 中显示登录错误?【英文标题】:Is there a way to show login error in Django? 【发布时间】:2021-12-29 02:30:49 【问题描述】:

我的网站有一个自定义登录页面。输入正确的帐户详细信息后,我可以登录我的网站。但是,如果我输入错误的帐户详细信息,它只会刷新页面,而 usernamepassword 的文本框为空。有没有办法将'Username or Password is wrong' 之类的内容显示为错误或消息?

在 login.html 中我有以下内容

% if messages %
%for message in messages%
<div class ="alert alert-success" role="alert">
message
</div>
%endfor%
%endif%

% for field in form %        
% if field.errors %        
% for error in field.errors %
<div class="alert alert-danger" role="alert">
 <div class="d-flex flex-row">
  <div class="align-middle pr-2">
   <svg xmlns="http://www.w3.org/2000/svg"   fill="currentColor"
                                                class="bi bi-x-circle-fill" viewBox="0 0 16 16">
                                                <path
                                                    d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zM5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.646a.5.5 0 0 0 .708.708L8 8.707l2.646 2.647a.5.5 0 0 0 .708-.708L8.707 8l2.647-2.646a.5.5 0 0 0-.708-.708L8 7.293 5.354 4.646z" />
    </svg>
   </div>
  <div class="align-middle"><b>field.label</b> - error</div>
 </div>
</div>
% endfor %
% endif %
% endfor %

如果用户名或密码不正确,以下似乎没有任何作用。

【问题讨论】:

【参考方案1】:

在任何 Web 应用程序中,我们都需要在处理完表单或其他一些类型的请求后向最终用户显示通知消息。为了简化这个消息传递系统,Django 为匿名用户和经过身份验证的用户提供了对基于 cookie 和会话的消息传递的全面支持。

此消息框架能够在一个请求中存储消息并在后续请求中检索这些消息。每条消息都有一个基于其优先级(信息、警告和错误)的标签。

更多信息请点击here.

【讨论】:

我知道这一点。但问题是我没有为此使用任何自编码视图。我正在使用 from django.contrib.auth import views as auth_viewsauth_views.LoginView.as_view【参考方案2】:

尝试将其添加到您的模板中

% if form.errors %
    <p>username or password is wrong</p>
% endif %

【讨论】:

以上是关于有没有办法在 Django 中显示登录错误?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Django 的登录表单中显示错误?

Django,自定义身份验证登录。身份验证失败时如何显示错误消息?

Django Allauth 自定义登录不显示错误

django authenticationform 没有显示所有错误

Laravel 8:有没有办法在警报框中显示默认表单错误消息

Django:提交表单时未显示错误