Django реверс для 'password_change_done' не найден
У меня есть небольшое приложение, которое я пишу, но я столкнулся с некоторыми проблемами с элементами смены пароля, используемыми в фреймворке аутентификации Django. Но я всегда получаю ошибку после смены пароля: Reverse for 'password_change_done' not found. 'password_change_done' не является допустимой функцией представления или именем шаблона. Вот мой код ниже:
#account urls.py
from django.urls import path, include
from django.contrib.auth import views as auth_views
from . import views
app_name = 'account'
urlpatterns = [
#Password Changes URLs
path('password_change/', auth_views.PasswordChangeView.as_view(), name='password_change'),
path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
]
Вот моя структура каталогов для системы входа в систему: Структура директорий
Вот файл password_change.html:
<h3 style="text-align: center;">Change your password</h3>
<div class="login-form" style="text-align: center; ">
<form method="post">
{{ form.as_p }}
<p><input type="submit" value="Change"></p>
{% csrf_token %}
</form>
</div>
Любая помощь будет очень признательна!
Поскольку вы используете app_name
, вам необходимо включить пространство имен в success_url
из PasswordChangeView
:
# account urls.py
from django.urls import path, include
from django.contrib.auth import views as auth_views
from . import views
from django.urls import reverse_lazy
app_name = 'account'
urlpatterns = [
#Password Changes URLs
path('password_change/', auth_views.PasswordChangeView.as_view(
success_url=reverse_lazy('account:password_change_done')
), name='password_change'),
path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
]
некоторые другие основанные на классах представления пакета auth
имеют success_url
, поэтому они также должны быть обновлены.