PasswordResetCompleteView
Класс PasswordResetCompleteView применяется для отображения страницы, которая информирует пользователя об успешном изменении пароля после перехода по ссылке из письма. Он наследуется от встроенного класса TemplateView и автоматически использует шаблон registration/password_reset_complete.html, если не указан другой. После завершения сброса пользователь может перейти на страницу входа или на любой другой URL, заданный с помощью атрибута next_page.
Синтаксис
from django.contrib.auth.views import PasswordResetCompleteView
# Базовое использование в urls.py
path('reset/complete/', PasswordResetCompleteView.as_view(), name='password_reset_complete')
Атрибуты
Класс PasswordResetCompleteView имеет следующие основные атрибуты для настройки:
-
template_name- имя шаблона, который будет отображаться. По умолчаниюregistration/password_reset_complete.html. -
next_page- URL или именованный путь для перенаправления после успешного сброса пароля. Если не задан, пользователь останется на странице завершения. -
success_url_allowed_hosts- список разрешённых хостов для перенаправления.
Пример
Рассмотрим базовую настройку маршрутов для сброса пароля с использованием PasswordResetCompleteView в файле urls.py:
from django.urls import path
from django.contrib.auth import views as auth_views
urlpatterns = [
path('password-reset/',
auth_views.PasswordResetView.as_view(),
name='password_reset'),
path('password-reset/done/',
auth_views.PasswordResetDoneView.as_view(),
name='password_reset_done'),
path('reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(),
name='password_reset_confirm'),
path('reset/complete/',
auth_views.PasswordResetCompleteView.as_view(),
name='password_reset_complete'),
]
Теперь при переходе по URL /reset/complete/ будет отображаться стандартная страница Django с сообщением об успешной смене пароля.
Пример
Изменим стандартный шаблон и укажем перенаправление на страницу входа после успешного сброса пароля:
from django.contrib.auth.views import PasswordResetCompleteView
from django.urls import path
urlpatterns = [
path('reset/complete/',
PasswordResetCompleteView.as_view(
template_name='custom/password_reset_success.html',
next_page='login'
),
name='password_reset_complete'),
]
После успешного завершения сброса пользователь будет автоматически перенаправлен на страницу входа, а не на страницу с шаблоном.
Пример
Создадим собственный класс для дополнительной логики, например, отправки уведомления администратору или логирования события:
from django.contrib.auth.views import PasswordResetCompleteView
from django.shortcuts import redirect
from django.urls import reverse
class CustomPasswordResetCompleteView(PasswordResetCompleteView):
template_name = 'custom/password_reset_complete.html'
def get(self, request, *args, **kwargs):
# Дополнительная логика
print("Password reset completed for user")
return super().get(request, *args, **kwargs)
def get_success_url(self):
return reverse('profile')
В этом примере мы переопределили метод get для выполнения пользовательского кода и метод get_success_url для указания URL перенаправления после завершения.
Пример
Рассмотрим шаблон registration/password_reset_complete.html, который используется по умолчанию. Вы можете создать свой файл с кастомным дизайном:
{% extends "base.html" %}
{% block content %}
<h2>Password reset complete</h2>
<p>Your password has been set. You can now log in.</p>
<a href="{% url 'login' %}">Log in</a>
{% endblock %}
Этот шаблон будет отображаться после завершения процесса сброса пароля, если вы используете стандартное имя шаблона.
Смотрите также
-
класс
PasswordResetView,
который отвечает за отображение формы для ввода email и отправку письма со ссылкой для сброса -
класс
PasswordResetConfirmView,
который обрабатывает переход по ссылке из письма и отображение формы ввода нового пароля -
класс
PasswordResetDoneView,
который показывает страницу после отправки письма со ссылкой для сброса пароля -
класс
LoginView,
который используется для аутентификации пользователя и входа в систему