Книга «Изучаем Python»



Pdf көрінісі
бет257/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   253   254   255   256   257   258   259   260   ...   266
Байланысты:
Изучаем 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 %}

{% csrf_token %}
{{ form.as_p }}



Создание учетных записей пользователей
427


{% endblock content %}
Мы снова используем метод 
as_p
, чтобы инфраструктура Django могла правильно 
отобразить все поля формы, включая все сообщения об ошибках, если форма была 
заполнена неправильно.
Создание ссылки на страницу регистрации
Следующий шаг — добавление кода для вывода ссылки на страницу регистрации 
для любого пользователя, еще не выполнившего вход:
base.html
...
{% if user.is_authenticated %}
Hello, {{ user.username }}.
log out
{% else %}
register -
log in
{% endif %}
...
Теперь пользователи, выполнившие вход, получат персональное приветствие 
и ссылку для выхода. Другие пользователи видят ссылку на страницу регистрации 
и ссылку для входа. Проверьте страницу регистрации, создав несколько учетных 
записей с разными именами пользователей.
В следующем разделе доступ к некоторым страницам будет ограничен, чтобы 
страницы были доступны только для зарегистрированных пользователей. Также 
необходимо позаботиться о том, чтобы каждая тема принадлежала конкретному 
пользователю.


Достарыңызбен бөлісу:
1   ...   253   254   255   256   257   258   259   260   ...   266




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет