PasswordResetCompleteView

Класс PasswordResetCompleteView применяется для отображения страницы, которая информирует пользователя об успешном изменении пароля после перехода по ссылке из письма. Он наследуется от встроенного класса TemplateView и автоматически использует шаблон registration/password_reset_complete.html, если не указан другой. После завершения сброса пользователь может перейти на страницу входа или на любой другой URL, заданный с помощью атрибута next_page.

Синтаксис

pythonfrom django.contrib.auth.views import PasswordResetCompleteView

# Базовое использование в urls.py
path('reset/complete/', PasswordResetCompleteView.as_view(), name='password_reset_complete')

Атрибуты

Класс PasswordResetCompleteView имеет следующие основные атрибуты для настройки:

Пример

Рассмотрим базовую настройку маршрутов для сброса пароля с использованием PasswordResetCompleteView в файле urls.py:

pythonfrom 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 с сообщением об успешной смене пароля.

Пример

Изменим стандартный шаблон и укажем перенаправление на страницу входа после успешного сброса пароля:

pythonfrom 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'),
]

После успешного завершения сброса пользователь будет автоматически перенаправлен на страницу входа, а не на страницу с шаблоном.

Пример

Создадим собственный класс для дополнительной логики, например, отправки уведомления администратору или логирования события:

pythonfrom 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, который используется по умолчанию. Вы можете создать свой файл с кастомным дизайном:

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,
    который используется для аутентификации пользователя и входа в систему