Error:Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name
Error:Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name
我在重置密码时遇到问题。如果我删除命名空间 app_name = 'crm'
,它会完美运行。但是当我包含 app_name = 'crm'
我得到错误,
错误:未找到 'password_reset_confirm' 的反向。 'password_reset_confirm' 不是有效的视图函数或模式名称。
但我希望它在不删除命名空间的情况下工作。
我的urls.py
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
app_name = 'crm'
urlpatterns = [
path('', views.home, name='dashboard'),
path('login/', views.loginPage, name='login'),
path('register/', views.registerPage, name='register'),
path('logout/', views.logoutUser, name='logout'),
path('reset_password/', auth_views.PasswordResetView.as_view(),
name="reset_password"),
path('reset_password_sent/', auth_views.PasswordResetDoneView.as_view(),
name="password_reset_done"),
path('reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(), name="password_reset_confirm"),
path('reset_password_complete/', auth_views.PasswordResetCompleteView.as_view(),
name="password_reset_complete"),
]
由于您指定了 app_name = 'crm'
,这意味着视图的名称应该以 <i>app_name</i>:
, 例如这里 crm:password_reset_confirm
.
url 写在视图中,但我们可以覆盖这些,例如:
from django.urls import <b>reverse_lazy</b>
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
app_name = 'crm'
urlpatterns = [
path('', views.home, name='dashboard'),
path('login/', views.loginPage, name='login'),
path('register/', views.registerPage, name='register'),
path('logout/', views.logoutUser, name='logout'),
path(
'reset_password/',
auth_views.PasswordResetView.as_view(<b>success_url=reverse_lazy('crm:password_reset_done')</b>),
name='reset_password'
),
path(
'reset_password_sent/',
auth_views.PasswordResetDoneView.as_view(),
name='password_reset_done'
),
path(
'reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(<b>success_url=reverse_lazy('crm:password_reset_complete')</b>),
name='password_reset_confirm'
),
path(
'reset_password_complete/',
auth_views.PasswordResetCompleteView.as_view(),
name='password_reset_complete'
)
]
Django 3.2.5 和 Python 3.8.10 - 同样的错误
在我的例子中,我必须为 PasswordResetView 定义一个 email_template_name,然后重新创建该电子邮件模板。
# ...
path(
'reset_password/',
auth_views.PasswordResetView.as_view(
success_url=reverse_lazy('crm:password_reset_done'),
email_template_name='my_email.html'
),
name='reset_password'
),
# ...
我在重置密码时遇到问题。如果我删除命名空间 app_name = 'crm'
,它会完美运行。但是当我包含 app_name = 'crm'
我得到错误,
错误:未找到 'password_reset_confirm' 的反向。 'password_reset_confirm' 不是有效的视图函数或模式名称。
但我希望它在不删除命名空间的情况下工作。我的urls.py
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
app_name = 'crm'
urlpatterns = [
path('', views.home, name='dashboard'),
path('login/', views.loginPage, name='login'),
path('register/', views.registerPage, name='register'),
path('logout/', views.logoutUser, name='logout'),
path('reset_password/', auth_views.PasswordResetView.as_view(),
name="reset_password"),
path('reset_password_sent/', auth_views.PasswordResetDoneView.as_view(),
name="password_reset_done"),
path('reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(), name="password_reset_confirm"),
path('reset_password_complete/', auth_views.PasswordResetCompleteView.as_view(),
name="password_reset_complete"),
]
由于您指定了 app_name = 'crm'
,这意味着视图的名称应该以 <i>app_name</i>:
, 例如这里 crm:password_reset_confirm
.
url 写在视图中,但我们可以覆盖这些,例如:
from django.urls import <b>reverse_lazy</b>
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
app_name = 'crm'
urlpatterns = [
path('', views.home, name='dashboard'),
path('login/', views.loginPage, name='login'),
path('register/', views.registerPage, name='register'),
path('logout/', views.logoutUser, name='logout'),
path(
'reset_password/',
auth_views.PasswordResetView.as_view(<b>success_url=reverse_lazy('crm:password_reset_done')</b>),
name='reset_password'
),
path(
'reset_password_sent/',
auth_views.PasswordResetDoneView.as_view(),
name='password_reset_done'
),
path(
'reset/<uidb64>/<token>/',
auth_views.PasswordResetConfirmView.as_view(<b>success_url=reverse_lazy('crm:password_reset_complete')</b>),
name='password_reset_confirm'
),
path(
'reset_password_complete/',
auth_views.PasswordResetCompleteView.as_view(),
name='password_reset_complete'
)
]
Django 3.2.5 和 Python 3.8.10 - 同样的错误
在我的例子中,我必须为 PasswordResetView 定义一个 email_template_name,然后重新创建该电子邮件模板。
# ...
path(
'reset_password/',
auth_views.PasswordResetView.as_view(
success_url=reverse_lazy('crm:password_reset_done'),
email_template_name='my_email.html'
),
name='reset_password'
),
# ...