如何在Django后台登录页面添加忘记密码选项?有无相关可用包?
Django后台登录页添加“忘记密码”功能的实现方法
一、利用Django自带功能自定义实现(无需第三方包)
Django本身内置了完整的密码重置流程视图,只需简单配置即可集成到后台登录页:
1. 配置密码重置相关URL
在项目根目录的urls.py中添加以下路由:
from django.contrib.auth import views as auth_views from django.contrib import admin urlpatterns = [ # 保留原有admin路由及其他URL path('admin/', admin.site.urls), # 密码重置相关路由 path('admin/password_reset/', auth_views.PasswordResetView.as_view( template_name='admin/password_reset_form.html', email_template_name='admin/password_reset_email.html', subject_template_name='admin/password_reset_subject.txt' ), name='admin_password_reset'), path('admin/password_reset/done/', auth_views.PasswordResetDoneView.as_view( template_name='admin/password_reset_done.html' ), name='password_reset_done'), path('admin/reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view( template_name='admin/password_reset_confirm.html' ), name='password_reset_confirm'), path('admin/reset/done/', auth_views.PasswordResetCompleteView.as_view( template_name='admin/password_reset_complete.html' ), name='password_reset_complete'), ]
2. 自定义Admin登录模板
将Django默认的admin登录模板(路径通常为django/contrib/admin/templates/admin/login.html)复制到你项目的templates/admin/目录下,在密码输入框下方添加“忘记密码”链接:
<!-- 在登录表单的合适位置添加 --> <div> <p><a href="{% url 'admin_password_reset' %}">忘记密码?</a></p> </div>
3. 配置邮件服务
密码重置需要发送验证邮件,在settings.py中配置SMTP参数:
# 邮件配置示例 EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.your-email-provider.com' EMAIL_PORT = 587 EMAIL_USE_TLS = True EMAIL_HOST_USER = 'your-account@example.com' EMAIL_HOST_PASSWORD = 'your-email-password-or-app-token'
二、第三方包方案
如果不想手动配置,可使用django-admin-password-reset这类第三方包,安装后只需简单配置即可快速集成。不过需要注意:Django自带的密码重置功能已经足够完善,除非有特殊需求,否则优先推荐使用内置方案。
内容的提问来源于stack exchange,提问作者Setare Kalantari
相关产品推荐
相关产品推荐

