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

14

在我的项目中,我正在使用Django Allauth进行用户流程。我已成功创建了一组从标准Allauth模板继承的自己的模板,它们有效率达到了95%。然而,由于某些原因,如果登录无效,我不会收到错误信息。

如果我为该用户输入“test@email”,则会出现“请输入有效的电子邮件地址”错误,但是如果我输入正确的电子邮件和错误的密码,则页面会重新加载但没有任何错误信息。我在下面的模板中包含了{{ form.login.errors }}{{ form.password.errors }} 标签。

非常感谢您任何指导。

模板:

<div id="search_container">

            <div id="search_box_content">
                {% block page_content %}

                        <h4>Login</h4>

                            <form class="" id="user-form" method="POST" action="{% url 'account_login' %}">

                              {% csrf_token %}
                            <h1> {{ form.login.errors }}</h1>
                            <h1> {{ form.password.errors }}</h1>

                               <div class="input_class">

                                    <label for="login">Username: </label>
                            {{ form.login }}
                            </div>

                            <div class="input_class">
                              <label for="password">Password: </label>
                              {{ form.password }}
                            </div>
                            <div class="input_class" id="forgot_pass">
                              <label for="remember">
                              Remember Me? </label>
                            {{ form.remember }}
                            </div>
                              {% if redirect_field_value %}


                              <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
                              {% endif %}

                            <div id="modal_bottom_bar">

                              <a class="button secondaryAction" id="forgot_pass" href="{% url 'account_reset_password' %}">Forgot your Password?</a>

                              <button class="primaryAction" id="login_submit" type="submit">Login</button></div>
                            </form>

{% endblock %}

            </div>

        </div>
1个回答

39

有些错误是非字段错误,比如为一些自定义验证而引发的错误,并不包括在field.errors中,而是在form.non_field_errors中:

如果您手动呈现表单,请使用此片段显示属于字段和自定义验证的所有错误:

{% if form.errors %}
    {% for field in form %}
        {% for error in field.errors %}
            <div class="alert alert-error">
                <strong>{{ error|escape }}</strong>
            </div>
        {% endfor %}
    {% endfor %}
    {% for error in form.non_field_errors %}
        <div class="alert alert-error">
            <strong>{{ error|escape }}</strong>
        </div>
    {% endfor %}
{% endif %}

3
会给你+10 ;) - cwhisperer
真是个惊人的答案,我也希望能够给一个+10。 - mikebz
1
有一些信息没有显示,比如“登录尝试失败次数过多。请稍后再试。” 如何显示这种消息? - cwhisperer
@cwhisperer,你解决了如何显示“登录尝试失败次数过多,请稍后再试”的问题吗? - Abishek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接