Байланысты: Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )
Глава 19 • Учетные записи пользователей
authenticated_user = authenticate(username=new_user.username,
password=request.POST['password1'])
login(request, authenticated_user)
return HttpResponseRedirect(reverse('learning_logs:index'))
context = {'form': form}
return render(request, 'users/register.html', context)
Сначала импортируется функция
render()
, после чего импортируются функции
login()
и
authenticate()
для выполнения входа пользователя, если регистраци-
онная информация верна. Также импортируется класс
UserCreationForm
по умол-
чанию. В функции
register()
мы проверяем, отвечает ли функция на запрос
POST. Если нет, создается экземпляр
UserCreationForm
, не содержащий исходных
данных
. В случае ответа на запрос POST создается экземпляр
UserCreationForm
,
основанный на отправленных данных
. Мы проверяем, что данные верны
;
в данном случае что имя пользователя содержит правильные символы, пароли
совпадают, а пользователь не пытается вставить вредоносные конструкции в от-
правленные данные.
Если отправленные данные верны, мы вызываем метод
save()
формы для со-
хранения имени пользователя и хеша пароля в базе данных
. Метод
save()
возвращает только что созданный объект пользователя, который сохраняется
в
new_user
.
После того как информация пользователя будет сохранена, мы выполняем вход;
этот процесс состоит из двух шагов: сначала вызывается функция
authenticate()
с аргументом
new_user.username
и паролем
. При регистрации пользователю
предлагается ввести два совпадающих пароля; поскольку данные формы верны,
мы знаем, что пароли совпадают, и можем использовать любой из них. В данном
случае используется значение, связанное с ключом
'password1'
в данных POST
формы. Если имя пользователя и пароль верны, метод возвращает проверенный
объект пользователя, который сохраняется в
authenticated_user
. Затем вызывает-
ся функция
login()
с объектами
request
и
authenticated_user
, которая создает
действительный сеанс для нового пользователя.
Наконец, пользователь перенаправляется на домашнюю страницу
, где привет-
ствие в заголовке сообщает о том, что регистрация прошла успешно.
Шаблон регистрации
Шаблон страницы регистрации похож на шаблон страницы входа. Проследите
за тем, чтобы он был сохранен в одном каталоге с
login .html
:
register.html {% extends "learning_logs/base.html" %}
{% block content %}