You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django密码重置自定义问题:如何修改默认重置相关数据

Django 自定义密码重置内容的实现方法

1. 覆盖默认密码重置模板

Django 密码重置流程对应5个默认模板,你只需在项目的templates目录下创建同名模板文件,即可完全自定义页面内容:

  • 密码重置请求页:registration/password_reset_form.html
  • 重置链接发送成功提示页:registration/password_reset_done.html
  • 密码重置邮件内容模板:registration/password_reset_email.html(支持HTML)或registration/password_reset_email.txt(纯文本)
  • 新密码设置页:registration/password_reset_confirm.html
  • 密码重置完成提示页:registration/password_reset_complete.html

示例自定义密码重置表单模板(password_reset_form.html):

<div class="reset-container">
    <h3>忘记密码?</h3>
    <p>输入你的注册邮箱,我们会发送密码重置链接</p>
    <form method="post">
        {% csrf_token %}
        <div class="form-group">
            {{ form.email.label_tag }}
            {{ form.email }}
        </div>
        <button type="submit" class="btn-submit">发送重置链接</button>
    </form>
</div>

2. 自定义密码重置邮件

修改邮件内容

创建registration/password_reset_email.html自定义HTML格式邮件:

<p>您好,</p>
<p>有人申请重置您在{{ site_name }}的账户密码,请点击下方链接设置新密码:</p>
<p><a href="{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}">立即重置密码</a></p>
<p>若不是您发起的请求,请忽略此邮件。</p>

修改邮件主题

在settings.py中配置自定义主题模板:

PASSWORD_RESET_SUBJECT_TEMPLATE = 'registration/password_reset_subject.txt'

然后创建registration/password_reset_subject.txt:

【{{ site_name }}】账户密码重置申请

3. 自定义视图逻辑(进阶需求)

如果默认视图逻辑无法满足需求,可继承Django自带的视图类重写:

# views.py
from django.contrib.auth.views import PasswordResetView, PasswordResetConfirmView

class CustomPasswordResetView(PasswordResetView):
    template_name = 'registration/custom_reset_form.html'
    email_template_name = 'registration/custom_reset_email.html'
    subject_template_name = 'registration/custom_reset_subject.txt'

class CustomPasswordResetConfirmView(PasswordResetConfirmView):
    template_name = 'registration/custom_reset_confirm.html'

在urls.py中替换默认路由:

from django.urls import path
from .views import CustomPasswordResetView, CustomPasswordResetConfirmView

urlpatterns = [
    path('password-reset/', CustomPasswordResetView.as_view(), name='password_reset'),
    path('password-reset/<uidb64>/<token>/', CustomPasswordResetConfirmView.as_view(), name='password_reset_confirm'),
    # 其余重置流程路由可保留默认或同样自定义
    path('password-reset/done/', ...),
    path('password-reset/complete/', ...),
]

注意事项

确保settings.py的TEMPLATES配置包含你的自定义模板目录:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],  # 需包含此路径
        'APP_DIRS': True,
        # 其他配置项
    },
]

内容的提问来源于stack exchange,提问作者Дима Бирилко

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:50:07