логин django не показывает сообщение об ошибке - PullRequest
2 голосов
/ 03 сентября 2011

У меня есть обычная страница входа в django, но по какой-то причине, если я ввожу неправильную информацию для входа в систему, на ней не отображаются сообщения об ошибках, а просто обновляется страница.Есть идеи?

login.html

{% if form.errors %}
            <p>Your username and password didn't match, please try again.</p>
{% endif %}

        <form method="post" action=".">
            <p>
                <label for="id_username">Username:</label>
                {{ form.username }}
            </p>
            <p>
                <label for="id_password">Password:</label>
                {{ form.password }}
            </p>
            {% if next %}
                <input type="hidden" name="next" value="{{ next }}" />
            {% else %}
                <input type="hidden" name="next" value="/portal/" />
            {% endif %}
            <input type="submit" value="login" />
        </form>

1 Ответ

3 голосов
/ 03 сентября 2011

Возможно, вы создали новый form, заменив форму, содержащую form.errors, и вернув ее в шаблон. Если form.is_valid(): не равно True, то выполняется поиск следующего логического возврата. Возможно, вы создаете новый form прямо перед тем, как вернуться к шаблону.

EDIT:

Если вы используете django.contrib.auth.views.login, то в документации говорится, что вы должны указать action в форме и присвоить его

{% url 'django.contrib.auth.views.login' %}.

Вы должны изменить form на

<form method="POST" action="{% url 'django.contrib.auth.views.login' %}"> также использовать использование {% csrf_token %} после <form>.

...