19

如何将忘记密码功能添加到 Django 管理站点?有电子邮件/安全问题选项?有没有可用的插件/扩展?

4

2 回答 2

30

它们都建在 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'),

它们当然列在文档中。

您必须提供自己的模板。

于 2010-02-16T10:56:09.860 回答
12

实际上,自从 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 的存在将导致“忘记密码?” 链接显示在密码框下的默认管理员登录页面上

于 2013-07-02T20:14:10.123 回答