如何覆盖密码\u重置HTML模板

如何覆盖密码\u重置HTML模板,html,django,templates,Html,Django,Templates,我试图做的是覆盖django用于密码重置、密码重置完成、密码重置确认和密码重置完成的默认HTML模板。当我将自定义模板添加到第一个URL(密码重置)时,它实际上工作得非常好。我可以键入与用户关联的电子邮件并继续执行重置过程,但当我尝试为“密码重置”完成视图添加自定义模板时,“密码重置”视图不再工作,我收到以下错误: Reverse for 'password_reset_done' not found. 'password_reset_done' is not a valid view func

我试图做的是覆盖django用于密码重置、密码重置完成、密码重置确认和密码重置完成的默认HTML模板。当我将自定义模板添加到第一个URL(密码重置)时,它实际上工作得非常好。我可以键入与用户关联的电子邮件并继续执行重置过程,但当我尝试为“密码重置”完成视图添加自定义模板时,“密码重置”视图不再工作,我收到以下错误:

Reverse for 'password_reset_done' not found. 'password_reset_done' is not a valid view function or pattern name. 
以下是我的URL.py:

from django.conf.urls import url
# imports for views at a gloabl level (aka other django apps)
from . import views
from django.contrib.auth.views import (
    login,
    logout,
    password_reset,
    password_reset_done,
    password_reset_confirm,
    password_reset_complete
)

urlpatterns = [
    url(r'^$', views.home),
    url(r'^login/$', login, {'template_name': 'accounts/login.html'}),
    url(r'^logout/$', logout, {'template_name': 'accounts/logout.html'}),
    url(r'^register/$', views.register, name='register'),
    url(r'^profile/$', views.view_profile, name='view_profile'),
    url(r'^profile/edit$', views.edit_profile, name='edit_profile'),
    url(r'^change-password$', views.change_password, name='change_password'),
    url(r'^reset-password$', password_reset, {'template_name': 'accounts/reset_password.html'}),
    url(r'^reset-password/done/$', password_reset_done, {'template_name': 'accounts/password_reset_done.html'}),
    url(r'^reset-password/confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
    password_reset_confirm, {'template_name': 'accounts/password_reset_confirm.html'}),
    url(r'^reset-password/complete/$', password_reset_complete, {'template_name': 'accounts/password_reset_complete.html'})
]

非常感谢您的任何见解

您需要为这些URL添加名称,就像您为自己的URL添加名称一样。例如:

url(r'^reset-password/done/$', password_reset_done, {'template_name': 'accounts/password_reset_done.html'}, name='password_reset_done'),

您需要为这些URL添加名称,就像您为自己的URL添加名称一样。例如:

url(r'^reset-password/done/$', password_reset_done, {'template_name': 'accounts/password_reset_done.html'}, name='password_reset_done'),

批准的答案对我不起作用。这确实:

views.py:

from django.contrib.auth.views import PasswordResetConfirmView
# ...
class ActivateAccountConfirmView(PasswordResetConfirmView):
    template_name = "./registration/account_activate_confirm.html"
URL.py:

 re_path(
        r'^accounts/activate/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
        ActivateAccountConfirmView.as_view(),
        name='account_activate_confirm'),
re\u路径(
r'^accounts/activate/confirm/(?P[0-9A-Za-z_u \-])/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$,
激活eAccountConfirmView.as_view(),
name='account\u activate\u confirm'),

上下文:我的应用程序中有密码重置和帐户激活功能。还要注意的是,这不是原始用户询问的视图,但同样的方法应该有效。

批准的答案对我不起作用。这确实:

views.py:

from django.contrib.auth.views import PasswordResetConfirmView
# ...
class ActivateAccountConfirmView(PasswordResetConfirmView):
    template_name = "./registration/account_activate_confirm.html"
URL.py:

 re_path(
        r'^accounts/activate/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
        ActivateAccountConfirmView.as_view(),
        name='account_activate_confirm'),
re\u路径(
r'^accounts/activate/confirm/(?P[0-9A-Za-z_u \-])/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$,
激活eAccountConfirmView.as_view(),
name='account\u activate\u confirm'),

上下文:我的应用程序中有密码重置和帐户激活功能。还要注意的是,这不是原始用户询问的视图,但同样的方法应该可以工作。

尝试了这个解决方案,它成功了。非常感谢您抽出时间。我一定会把你的答案选为“最佳”和“向上投票”。我试过了,但没有成功<代码>重新设置路径(r'^password\u reset/$',auth\u views.PasswordResetView.as\u view(),{'template\u name':“reset\u password.html”},name='reset\u password'),这对我不起作用。该视图按预期工作,但是它使用了已经存在的密码重置模板。也就是说,我们已经覆盖了模板,所以也许我的系统有一些微妙的不同。尝试了这个解决方案,它成功了。非常感谢您抽出时间。我一定会把你的答案选为“最佳”和“向上投票”。我试过了,但没有成功<代码>重新设置路径(r'^password\u reset/$',auth\u views.PasswordResetView.as\u view(),{'template\u name':“reset\u password.html”},name='reset\u password'),这对我不起作用。该视图按预期工作,但是它使用了已经存在的密码重置模板。这就是说,我们已经覆盖了模板,所以我的系统可能有些微妙的不同。