РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
576 of 818 menu

Класс PasswordResetView

Класс PasswordResetView применяется для создания страницы восстановления пароля. Он наследуется от встроенного представления Django и автоматически обрабатывает отправку письма со ссылкой для сброса пароля. В качестве аргументов можно указать шаблон формы, email-тему, и другие настройки. По умолчанию представление использует шаблон 'registration/password_reset_form.html'.

Синтаксис

from django.contrib.auth.views import PasswordResetView PasswordResetView.as_view( template_name='registration/password_reset_form.html', email_template_name='registration/password_reset_email.html', subject_template_name='registration/password_reset_subject.txt', success_url='/login/', from_email='admin@example.com', html_email_template_name=None, extra_email_context=None )

Пример . Использование в urls.py

Давайте создадим URL-маршрут для восстановления пароля с использованием PasswordResetView:

from django.urls import path from django.contrib.auth.views import PasswordResetView from django.contrib.auth.views import PasswordResetDoneView from django.contrib.auth.views import PasswordResetConfirmView from django.contrib.auth.views import PasswordResetCompleteView urlpatterns = [ path('password-reset/', PasswordResetView.as_view( template_name='registration/password_reset_form.html', email_template_name='registration/password_reset_email.html', subject_template_name='registration/password_reset_subject.txt', success_url='/password-reset/done/' ), name='password_reset' ), path('password-reset/done/', PasswordResetDoneView.as_view(), name='password_reset_done' ), path('reset/<uidb64>/<token>/', PasswordResetConfirmView.as_view(), name='password_reset_confirm' ), path('reset/done/', PasswordResetCompleteView.as_view(), name='password_reset_complete' ), ]

Пример . Кастомный шаблон

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

{% extends "base.html" %} {% block content %} <h2>Восстановление пароля</h2> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Отправить</button> </form> {% endblock %}

Пример . Шаблон письма

Создадим шаблон для email-письма со ссылкой на сброс пароля в файле 'registration/password_reset_email.html':

{% autoescape off %} Здравствуйте, Вы получили это письмо, потому что запросили восстановление пароля для аккаунта на сайте. Пожалуйста, перейдите по ссылке ниже и установите новый пароль: {{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} Ваше имя пользователя: {{ user.get_username }} Спасибо за использование нашего сайта! {% endautoescape %}

Пример . Кастомизация представления

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

from django.contrib.auth.views import PasswordResetView from django.urls import reverse_lazy from django.contrib import messages class CustomPasswordResetView(PasswordResetView): template_name = 'custom/password_reset.html' email_template_name = 'custom/password_reset_email.html' subject_template_name = 'custom/password_reset_subject.txt' success_url = reverse_lazy('password_reset_done') from_email = 'noreply@mysite.com' def form_valid(self, form): email = form.cleaned_data['email'] messages.success( self.request, f'Ссылка для сброса пароля отправлена на {email}' ) return super().form_valid(form)

Результат выполнения кода:

"Ссылка для сброса пароля отправлена на user@example.com"

Пример . Использование с кастомной моделью пользователя

Если вы используете кастомную модель пользователя, убедитесь, что она содержит поле для email:

from django.contrib.auth.models import AbstractUser from django.db import models class CustomUser(AbstractUser): email = models.EmailField(unique=True) phone = models.CharField(max_length=15, blank=True) def __str__(self): return self.email

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

  • класс LoginView,
    который обрабатывает вход пользователя в систему
  • класс LogoutView,
    который обрабатывает выход пользователя из системы
  • класс PasswordChangeView,
    который позволяет изменить пароль авторизованного пользователя
  • класс PasswordResetConfirmView,
    который подтверждает и устанавливает новый пароль
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить