我正在关注以下部分添加密码重置功能 https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#adding-a-password-reset-feature到 Django Admin,它会要求您添加以下四个路径:
path('admin/password_reset/', auth_views.PasswordResetView.as_view(), name='admin_password_reset'),
path('admin/password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
当我添加它们时,“忘记密码或用户名?”链接出现在 Django 管理员登录屏幕上,如果我单击它,它就会起作用,它甚至会发送电子邮件,但在发送电子邮件之后,我最终会遇到此错误。
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/accounts/password_reset/done/
Raised by: django.contrib.auth.views.PasswordResetDoneView
404……呃……是的……那不是地方password_reset/done
是。电子邮件中的链接用于:http://localhost:8000/accounts/reset/Mjk/5...9
,所以,反对,那不是reset/<uidb64>/<token>/
。为什么这些网址位于错误的位置,/accounts/
代替/admin/
.
我的完整 URL 模式如下所示:
urlpatterns = [
path('admin/password_reset/', auth_views.PasswordResetView.as_view(), name='admin_password_reset'),
path('admin/password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls')),
path("", views.index, name="homepage")
]
我猜这些重定向会转到/accounts/
因为这path('accounts/', include('django.contrib.auth.urls'))
, 那是对的吗?还有其他方法可以控制它们吗?我主要是想了解发生了什么事。