如何在Django管理站点中添加忘记密码功能?包括电子邮件/安全问题选项?是否有可用的插件/扩展?
如何在Django管理站点中添加忘记密码功能?包括电子邮件/安全问题选项?是否有可用的插件/扩展?
它们都已经内置在Django中了。只需添加相关的URL模式。如下所示。
from django.contrib.auth import views as auth_views
patterns+=('',
url(r'^passreset/$',auth_views.password_reset,name='forgot_password1'),
url(r'^passresetdone/$',auth_views.password_reset_done,name='forgot_password2'),
url(r'^passresetconfirm/(?P<uidb36>[-\w]+)/(?P<token>[-\w]+)/$',auth_views.password_reset_confirm,name='forgot_password3'),
url(r'^passresetcomplete/$',auth_views.password_reset_complete,name='forgot_password4'),
)
顺便提一句,在此过程中,还需要添加密码更改的视图和URL模式。
url(r'^password/change/$',
auth_views.password_change,
name='auth_password_change'),
url(r'^password/change/done/$',
auth_views.password_change_done,
name='auth_password_change_done'),
它们当然可以在文档中找到。
您需要提供自己的模板。
实际上自Django 1.4以来,有一种简单的方法可以在管理员登录页面中直接显示忘记密码链接(听起来就像是被问到的准确问题):
https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#adding-a-password-reset-feature
您可以通过在URLconf中添加几行代码来为管理员网站添加密码重置功能。 具体来说,请添加以下四个模式:
url(r'^admin/password_reset/$',
'django.contrib.auth.views.password_reset',
name='admin_password_reset'), (r'^admin/password_reset/done/$',
'django.contrib.auth.views.password_reset_done'),
(r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$',
'django.contrib.auth.views.password_reset_confirm'),
(r'^reset/done/$',
'django.contrib.auth.views.password_reset_complete'),
(这假设您已在admin/处添加了管理界面,并要求您将以^admin/开头的URL放在包含管理应用程序本身的行之前)。
Django 1.4中进行了更改存在admin_password_reset命名的URL将导致“忘记密码?”链接出现在默认管理员登录页面的密码框下方。
url(r'^accounts/', include('registration.urls'))
。 - Lie Ryan