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
相关产品推荐
相关产品推荐

