NoReverseMatch в reset_password_complete: Django PasswordResetConfirmView
Я использую стандартные представления и формы сброса пароля Django для отправки пользователю электронного письма, чтобы он сбросил свой пароль по ссылке в письме. Я завершил большую часть разработки, но застрял на одной проблеме. Когда я получаю письмо от локального хоста, я нажимаю на ссылку, ввожу свой новый пароль 2 раза, нажимаю 'submit' и получаю эту ошибку: Error Message.
Ниже приведен мой код. urls.py
"""defines URL patterns for users"""
from django.urls import path, include, reverse_lazy
from django.contrib.auth import views as auth_views
from . import views
app_name = 'users'
urlpatterns = [
# include all default auth urls
path('', include('django.contrib.auth.urls')),
path('register/', views.register, name='register'),
path(
'reset_password/',
auth_views.PasswordResetView.as_view(
template_name='registration/password_reset.html',
success_url=reverse_lazy('users:password_reset_done')
) ,
name='reset_password'
),
path(
'reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(
template_name='registration/password_reset_form.html',
success_url=reverse_lazy('users:password_reset_complete')
),
name='password_reset_confirm'
),
path(
'password_reset_done/',
auth_views.PasswordResetDoneView.as_view(
template_name="registration/password_reset_sent.html"),
name='password_reset_done'
),
path(
'password_reset_complete/',
auth_views.PasswordResetCompleteView.as_view(
template_name='registration/password_reset_done.html'),
name='password_reset_complete'
),
path('forgot_username/', views.forgot_username, name="forgot_username"),
path('username_retrieval/', views.username_retrieval, name="username_retrieval"),
]
Как вы можете видеть, я использую пространство имен 'users' в переменной success_url, однако, кажется, что это работает на пути reset_password, но не работает на пути reset/<uidb64>/<token>.
Однако следует иметь в виду, что у меня есть пользовательская модель пользователя в моем приложении. Может ли это повлиять на мою способность использовать этот стандартный метод сброса пароля Django?
Кроме того, вот мои шаблоны в папке users/templates/registration/: User App Templates
Некоторые другие моменты, о которых следует упомянуть:
Когда я нажимаю на ссылку из моего письма, я попадаю на password_reset_confirm, а не на password_reset_form, так что это говорит мне о том, что имя шаблона также не перезаписывается.
Когда я меняюсь
success_url=reverse_lazy('users:password_reset_complete')
на
success_url=reverse_lazy('users:password_reset_completed')
приложение не ищет users:password_reset_completed, что означает, что success_url не перезаписывается.
Любая помощь будет оценена по достоинству, и я могу выложить больше кода и ответить на вопросы, если это необходимо.
Заранее спасибо!
эта строка перезаписывает все ваши пути:
path('', include('django.contrib.auth.urls')),
просто удалите его или, если вы хотите сохранить некоторые из них, поместите его в конец после ваших путей