При смене пароля с помощью django -allauth, перенаправление по умолчанию после успешной публикации смены пароля снова является шаблоном смены пароля. Поскольку я нахожу это непонятным, я переопределил исходный PasswordChnageView в моем файле views.py:
from allauth.account.views import PasswordChangeView
from django.urls import reverse_lazy
class MyPasswordChangeView(PasswordChangeView):
success_url = reverse_lazy('home')
и изменил свой файл urls.py:
from django.urls import path, include
from users.views import MyPasswordChangeView
urlpatterns = [
...
# User management
path('accounts/password/change/', MyPasswordChangeView.as_view(), name="account_change_password"),
path('accounts/', include('allauth.urls')),
...
]
Это прекрасно работает, когда пользователь вошел в систему, однако, когда я пытаюсь получить доступ к URL http://127.0.0.1: 8000 / account / password / change / во время выхода из системы, я получаю следующее сообщение об ошибке: AttributeError at /accounts/password/change/ 'AnonymousUser' object has no attribute 'has_usable_password'
До того, как я создал свой пользовательский переопределить, результатом того же поведения было то, что я был перенаправлен на URL входа в систему http://127.0.0.1: 8000 / account / login /? next = /
Что мне нужно изменить с мой пользовательский вид для перенаправления на URL входа в систему, когда вошедший в систему пользователь пытается получить доступ к URL http://127.0.0.1: 8000 / account / password / change /