PasswordChangeDoneView

Класс PasswordChangeDoneView является встроенным представлением (view) Django, которое отображает страницу подтверждения успешного изменения пароля пользователя. Оно наследуется от TemplateView и обычно используется вместе с PasswordChangeView. После успешной смены пароля пользователь перенаправляется на эту страницу, где отображается сообщение об успешном изменении пароля.

Синтаксис

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

urlpatterns = [
  path('password-change/done/', PasswordChangeDoneView.as_view(), name='password_change_done'),
]

Параметры

Класс PasswordChangeDoneView принимает следующие параметры при настройке:

Пример

Настроим URL-маршруты для смены пароля и страницы подтверждения:

pythonfrom django.contrib.auth.views import PasswordChangeView, PasswordChangeDoneView
from django.urls import path

urlpatterns = [
  path('password-change/', PasswordChangeView.as_view(), name='password_change'),
  path('password-change/done/', PasswordChangeDoneView.as_view(), name='password_change_done'),
]

Пример

Создадим шаблон для страницы подтверждения с именем 'registration/password_change_done.html':

ninja{% extends "base.html" %}

{% block content %}
  <h2>Пароль успешно изменен</h2>
  <p>Ваш пароль был успешно изменен.</p>
  <a href="{% url 'profile' %}">Вернуться в профиль</a>
{% endblock %}

Пример

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

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

urlpatterns = [
  path('password-change/done/',
    PasswordChangeDoneView.as_view(
      template_name='custom/password_done.html'
    ),
    name='password_change_done'
  ),
]

Пример

Передаем дополнительные данные в шаблон с помощью параметра extra_context:

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

urlpatterns = [
  path('password-change/done/',
    PasswordChangeView.as_view(
      extra_context={
        'title': 'Пароль обновлен',
        'user_info': 'Ваш пароль был успешно изменен'
      }
    ),
    name='password_change_done'
  ),
]

Пример

Полный пример настройки изменения пароля с использованием представлений из пакета auth:

pythonfrom django.contrib.auth.views import PasswordChangeView, PasswordChangeDoneView
from django.urls import path
from django.contrib.auth import views as auth_views

urlpatterns = [
  path('password-change/',
    PasswordChangeView.as_view(
      template_name='registration/password_change_form.html',
      success_url='/password-change/done/'
    ),
    name='password_change'
  ),
  path('password-change/done/',
    PasswordChangeDoneView.as_view(
      template_name='registration/password_change_done.html'
    ),
    name='password_change_done'
  ),
]

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

  • класс PasswordChangeView,
    который отвечает за форму изменения пароля
  • класс LoginView,
    который обрабатывает аутентификацию пользователя
  • класс LogoutView,
    который осуществляет выход пользователя из системы
  • класс PasswordResetDoneView,
    который отображает страницу успешного сброса пароля