PasswordResetDoneView

Класс PasswordResetDoneView применяется для отображения страницы подтверждения после того, как пользователь запросил сброс пароля. Это представление не принимает никаких аргументов и просто отображает шаблон с информацией о том, что на электронную почту было отправлено письмо со ссылкой для сброса пароля. Обычно используется в связке с PasswordResetView и PasswordResetConfirmView.

Синтаксис

pythonfrom django.contrib.auth.views import PasswordResetDoneView
from django.urls import path

urlpatterns = [
  path('reset/done/', PasswordResetDoneView.as_view(), name='password_reset_done'),
]

Класс наследуется от TemplateView и автоматически использует шаблон registration/password_reset_done.html, если не указано иное.

Параметры

Класс PasswordResetDoneView принимает следующие параметры при настройке в URL конфигурации:

Пример . Использование с кастомным шаблоном

Давайте настроим PasswordResetDoneView для использования собственного шаблона:

pythonfrom django.contrib.auth.views import PasswordResetDoneView
from django.urls import path

urlpatterns = [
  path(
    'reset/done/',
    PasswordResetDoneView.as_view(
      template_name='auth/reset_done.html'
    ),
    name='password_reset_done'
  ),
]

Пример . С дополнительным контекстом

Передадим дополнительные данные в шаблон через параметр extra_context:

pythonfrom django.contrib.auth.views import PasswordResetDoneView
from django.urls import path

urlpatterns = [
  path(
    'reset/done/',
    PasswordResetDoneView.as_view(
      template_name='auth/custom_reset_done.html',
      extra_context={
        'support_email': 'support@example.com',
        'company_name': 'My Company'
      }
    ),
    name='password_reset_done'
  ),
]

После этого в шаблоне можно использовать переменные {{ support_email }} и {{ company_name }}.

Пример . Полный процесс сброса пароля

Рассмотрим полный пример настройки всех представлений для сброса пароля в файле urls.py:

pythonfrom django.contrib.auth.views import (
  PasswordResetView,
  PasswordResetDoneView,
  PasswordResetConfirmView,
  PasswordResetCompleteView
)
from django.urls import path

urlpatterns = [
  path(
    'reset/',
    PasswordResetView.as_view(
      email_template_name='auth/password_reset_email.html',
      subject_template_name='auth/password_reset_subject.txt'
    ),
    name='password_reset'
  ),
  path(
    'reset/done/',
    PasswordResetDoneView.as_view(
      template_name='auth/password_reset_done.html'
    ),
    name='password_reset_done'
  ),
  path(
    'reset/<uidb64>/<token>/',
    PasswordResetConfirmView.as_view(
      template_name='auth/password_reset_confirm.html'
    ),
    name='password_reset_confirm'
  ),
  path(
    'reset/complete/',
    PasswordResetCompleteView.as_view(
      template_name='auth/password_reset_complete.html'
    ),
    name='password_reset_complete'
  ),
]

Пример . Шаблон для PasswordResetDoneView

Пример содержимого шаблона auth/password_reset_done.html:

html{% extends 'base.html' %}

{% block title %}Письмо отправлено{% endblock %}

{% block content %}
  <h2>Проверьте вашу почту</h2>
  <p>
    Мы отправили вам инструкции по сбросу пароля
    на указанный адрес электронной почты.
  </p>
  <p>
    Если вы не получили письмо, проверьте папку
    "Спам" или попробуйте еще раз.
  </p>
{% endblock %}

Смотрите также

  • класс PasswordResetView,
    который обрабатывает форму запроса на сброс пароля
  • класс PasswordResetConfirmView,
    который обрабатывает подтверждение и установку нового пароля
  • класс PasswordResetCompleteView,
    который отображает страницу успешного завершения сброса пароля
  • класс PasswordChangeView,
    который используется для смены пароля авторизованного пользователя