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

dj-rest-auth重置密码默认邮件模板覆盖失效求助

自定义dj-rest-auth重置密码邮件模板无效问题

我尝试覆盖dj-rest-auth的默认重置密码邮件模板,但多种方案均未生效,以下是我的实现代码及已尝试的操作:

已实现的代码

urls.py

path('dj-rest-auth/', include('dj_rest_auth.urls')),
path('dj-rest-auth/registration/', include('dj_rest_auth.registration.urls')),
path("password-reset/confirm/<uidb64>/<token>/",TemplateView.as_view(
    template_name="main/password_reset_confirm.html"),name='password_reset_confirm'), 

serializers.py

class CustomPasswordResetSerializer(PasswordResetSerializer):
    
    def get_email_options(self):
        return {
            'html_email_template_name': 'custom_email_template.html',
        }    

    def validate_email(self, value):
        self.reset_form = self.password_reset_form_class(data=self.initial_data)
        if not self.reset_form.is_valid():
            raise serializers.ValidationError(self.reset_form.errors)
        elif not User.objects.filter(email=value).exists():
            raise serializers.ValidationError("该邮箱对应的用户不存在!")
        return value    

settings.py

REST_AUTH_SERIALIZERS = {
    'USER_DETAILS_SERIALIZER': 'main.serializers.UserSerializer',
    'PASSWORD_RESET_SERIALIZER': 'main.serializers.CustomPasswordResetSerializer'
}

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS':  [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

已尝试的无效方案

  • 重写save方法:
def save(self):
    request = self.context.get('request')
    opts = {
        'use_https': request.is_secure(),
        'from_email': getattr(settings, 'DEFAULT_FROM_EMAIL'),
        'html_email_template_name': 'custom_email_template.html',
        'request': request,
    }
    self.reset_form.save(**opts)
  • 将模板文件放置在templates/registration/password_reset_email.html路径下
  • 将模板文件放置在templates/custom_email_template.html路径下

内容的提问来源于stack exchange,提问作者Mohcen CH

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:05:18