422 Глава 19 • Учетные
записи пользователей
Если у формы установлен атрибут
errors
, выводится сообщение об ошибке .
В нем говорится, что комбинация имени пользователя и пароля не соответствует
информации, хранящейся в базе данных.
Мы хотим, чтобы представление обработало форму, поэтому аргументу
action
присваивается URL страницы входа . Представление отправляет форму шаблону,
мы должны вывести форму и добавить кнопку отправки данных . В точке
включается скрытый элемент формы
'next'
; аргумент
value
сообщает Django, куда
перенаправить пользователя после успешно выполненного входа. В нашем случае
пользователь возвращается обратно на домашнюю страницу.
Создание ссылки на страницу входа
Добавим ссылку на страницу входа в
base .html
, чтобы она присутствовала на каждой
странице. Ссылка не должна отображаться, если пользователь уже прошел про-
цедуру входа, поэтому она вкладывается в тег
{%
if
%}
:
base.html
Learning Log -
Topics -
{% if user.is_authenticated %}
Hello, {{ user.username }}.
{% else %}
log in
{% endif %}
{% block content %}{% endblock content %}
В системе аутентификации Django в каждом шаблоне доступна переменная
user
, в которой всегда присутствует атрибут
is_authenticated
: атрибут равен
True
, если пользователь прошел проверку, и
False
в противном случае. Это по-
зволяет вам выводить разные сообщения для проверенных и непроверенных
пользователей.
В данном случае мы выводим приветствие для пользователей, выполнивших вход.
У проверенных пользователей устанавливается дополнительный атрибут
username
,
который обеспечит личную настройку приветствия и напомнит пользователю
о том, что вход был выполнен. В точке выводится ссылка на страницу входа для
пользователей, которые еще не прошли проверку.
Использование страницы входа
Учетная запись пользователя уже создана; попробуем ввести данные и посмотрим,
работает ли страница. Откройте страницу http://localhost:8000/admin/. Если вы
все еще работаете с правами администратора, найдите ссылку выхода в заголовке
и щелкните на ней.
После выхода перейдите по адресу http://localhost:8000/users/login/. На экране
должна появиться страница входа, похожая на рис. 19.4. Введите имя пользователя
и пароль, заданные ранее, и вы снова должны оказаться на странице со списком.