Django密码修改报错Reverse for 'password_change_done' not found怎么解决
错误原因
你在account应用的urls.py中设置了app_name = 'account',为该应用下的所有路由新增了account命名空间。而Django内置的PasswordChangeView默认反向解析跳转目标时,使用的是不带命名空间的password_change_done,和你实际注册的带命名空间的account:password_change_done不匹配,因此抛出反向解析失败的错误。
解决方案
直接在定义PasswordChangeView路由时,手动指定跳转的成功地址即可,修改account/urls.py的对应代码:
# account urls.py from django.urls import path, include, reverse_lazy 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( success_url = reverse_lazy('account:password_change_done') ), name='password_change'), path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'), ]
修改完成后密码修改逻辑就能正常匹配到跳转路由,不会再抛出解析错误。
内容的提问来源于stack exchange,提问作者TheSunbathingCrow
相关产品推荐
相关产品推荐

