记录一下Django的密码重置(忘记密码)

发布于:2025-03-09 ⋅ 阅读:(13) ⋅ 点赞:(0)

一. Django默认的密码重置

1.路由

# url.py


from django.contrib.auth import views as auth_views

urlpatterns = [


# 密码重置
    path('password_reset/', auth_views.PasswordResetView.as_view(), name='password_reset'),

    # 用户输入邮箱后,跳转到此页面
    path('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'),
]

2.配置

# settings.py


# 邮件设置 (在开发环境下使用控制台邮件发送)
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'  # 在开发模式下打印邮件内容

# 在生产环境中使用真实的邮件服务(例如Gmail、SendGrid等)
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# EMAIL_HOST = 'smtp.gmail.com'
# EMAIL_PORT = 587
# EMAIL_USE_TLS = True
# EMAIL_HOST_USER = 'your_email@example.com'
# EMAIL_HOST_PASSWORD = 'your_email_password'

DEFAULT_FROM_EMAIL = '123456@qq.com'  # 发件人邮箱

PASSWORD_RESET_TIMEOUT = 100  # 60 * 60 * 24 * 1  # 24 小时(单位:秒)

3.访问 /password_reset/

4.返回成功页面

5.控制台显示

6.点击链接 进到重置页面

7.修改成功

二. 自定义密码重置

1. 输入注册邮箱

2. 返回重置链接 

3. 重置密码 

4. 重置完成 返回到登录页