找不到 'password_reset_complete' 的反转
Reverse for 'password_reset_complete' not found
我正在使用 PasswordResetView
重设密码,但是当我输入新密码并提交按钮时。 Django 重定向到这个
ulrs.py
from django.urls import path
from Authentication import views
from django.contrib.auth import views as auth_view
from .forms import *
app_name = 'Authentication'
urlpatterns = [
path('', views.loginpage, name='loginpage'),
path('login', views.handlelogin, name='login'),
path('logout', views.handlelogout, name='logout'),
path('password_reset', views.password_reset, name='password_reset'),
path('password_reset/done/',
auth_view.PasswordResetDoneView.as_view(template_name='Authentication_template/password_reset_done.html'),
name='password_reset_done'),
path('reset/<uidb64>/<token>/',
auth_view.PasswordResetConfirmView.as_view(template_name='Authentication_template/password_reset.html',
form_class=SetPasswordForm), name='password_reset_confirm'),
path('password_reset_complete/', auth_view.PasswordResetCompleteView.as_view(
template_name='Authentication_template/password_reset_complete.html'),
name='password_reset_complete')
]
这里我使用自定义视图向用户发送电子邮件。
您已设置 app_name = 'Authentication'
,这意味着您具有 namespaced 这些 url。所以你现在需要将它们称为 Authentication:password_reset_complete
而不是 password_reset_complete
,等等。参见 URL namespaces (Django docs)
一个解决方案是删除行 app_name = 'Authentication'
,如果您希望保留这些行,您需要自己为视图设置 success_url
,您可以将其作为 kwarg 传递给as_view
:
from django.urls import reverse_lazy
path('reset/<uidb64>/<token>/',
auth_view.PasswordResetConfirmView.as_view(
template_name='Authentication_template/password_reset.html',
form_class=SetPasswordForm,
<b>success_url = reverse_lazy('Authentication:password_reset_complete')</b>
), name='password_reset_confirm'
)
看来您为 password_reset_complete 使用了错误的路径名。
而不是路径('password_reset_complete/'...
试试:
path('reset/done/', auth_view.PasswordResetCompleteView.as_view(
template_name='Authentication_template/password_reset_complete.html'),
name='password_reset_complete')
我正在使用 PasswordResetView
重设密码,但是当我输入新密码并提交按钮时。 Django 重定向到这个
ulrs.py
from django.urls import path
from Authentication import views
from django.contrib.auth import views as auth_view
from .forms import *
app_name = 'Authentication'
urlpatterns = [
path('', views.loginpage, name='loginpage'),
path('login', views.handlelogin, name='login'),
path('logout', views.handlelogout, name='logout'),
path('password_reset', views.password_reset, name='password_reset'),
path('password_reset/done/',
auth_view.PasswordResetDoneView.as_view(template_name='Authentication_template/password_reset_done.html'),
name='password_reset_done'),
path('reset/<uidb64>/<token>/',
auth_view.PasswordResetConfirmView.as_view(template_name='Authentication_template/password_reset.html',
form_class=SetPasswordForm), name='password_reset_confirm'),
path('password_reset_complete/', auth_view.PasswordResetCompleteView.as_view(
template_name='Authentication_template/password_reset_complete.html'),
name='password_reset_complete')
]
这里我使用自定义视图向用户发送电子邮件。
您已设置 app_name = 'Authentication'
,这意味着您具有 namespaced 这些 url。所以你现在需要将它们称为 Authentication:password_reset_complete
而不是 password_reset_complete
,等等。参见 URL namespaces (Django docs)
一个解决方案是删除行 app_name = 'Authentication'
,如果您希望保留这些行,您需要自己为视图设置 success_url
,您可以将其作为 kwarg 传递给as_view
:
from django.urls import reverse_lazy
path('reset/<uidb64>/<token>/',
auth_view.PasswordResetConfirmView.as_view(
template_name='Authentication_template/password_reset.html',
form_class=SetPasswordForm,
<b>success_url = reverse_lazy('Authentication:password_reset_complete')</b>
), name='password_reset_confirm'
)
看来您为 password_reset_complete 使用了错误的路径名。
而不是路径('password_reset_complete/'...
试试:
path('reset/done/', auth_view.PasswordResetCompleteView.as_view(
template_name='Authentication_template/password_reset_complete.html'),
name='password_reset_complete')