Django 登录不显示错误

Ste*_*993 2 authentication django

我知道周围有很多这样的问题,但没有一个包含明确的答案。我正在使用 Django 的默认身份验证,但在显示“您的用户名/密码组合不正确”之类的内容时遇到问题。是否可以在不创建自定义视图函数的情况下解决此问题?

我的 urls.py 看起来像这样:

    url(r'^login/$', auth_views.login, {'template_name': 'login.html'},
    name='mysite_login')
Run Code Online (Sandbox Code Playgroud)

然后我的login.html有以下代码:

{% block content %}
<section class="content">
  <div class="container block">
      <div class="row">
          <div class="col-md-12"></div>
            <form action="{% url 'mysite_login' %}" class="form-control" method="post" accept-charset="utf-8">
              {% csrf_token %}
              {% for field in form %}
                <p>
                  {{ field.label_tag }}<br>
                  {{ field|addcss:'form-control' }}
                  {% if field.help_text %}
                    <small style="color: grey">{{ field.help_text|safe }}</small>
                  {% endif %}
                  {% for error in field.errors %}
                    <p style="color: red">{{ error }}</p>
                  {% endfor %}
                </p>
              {% endfor %}
              <button type="submit" class="btn btn-dark">Login</button>

              <input class="form-control" type="hidden" name="next" value="{{ next }}"><br>

            </form>
          </div>
      </div>
  </div>
 </section>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

所以除了显示错误消息之外,这一切都有效。我已经看到了答案,您可以编写自定义视图函数和表单来解决此问题,但我认为使用内置登录功能时也应该可以,对吧?多谢。

Dan*_*man 6

内置的登录表单不会在单个字段级别显示错误;说只是密码错误是存在安全风险的,因为它确认了特定用户名的存在。因此,错误是在通用clean()方法中引发的,并通过{{ form.non_field_errors }}.