如何自定义 django rest auth 电子邮件上下文
How to customize django rest auth email context
类似于这个问题
我想自定义由 django rest auth 自动发送的密码重置(和其他)电子邮件。将自定义电子邮件模板与自定义序列化程序一起使用非常有效:
class CustomPasswordResetSerializer(PasswordResetSerializer):
def get_email_options(self):
return {
'domain_override': settings.FRONTEND_URL,
'email_template_name': 'registration/custom_reset_email.txt',
'html_email_template_name': 'registration/custom_reset_email.html',
}
但除了自定义模板之外,我还想添加自定义 context。有简单的方法吗?
PasswordResetSerializer
使用 django.contrib.auth.forms
中的 PasswordResetForm
。 PasswordResetForm
的 save()
方法接受参数 extra_email_context
。因此,您需要做的就是将 extra_email_context
添加到 return:
的字典中
def get_email_options(self):
extra_context = {...} # your extra context parameters
return {
'domain_override': settings.FRONTEND_URL,
'email_template_name': 'registration/custom_reset_email.txt',
'html_email_template_name': 'registration/custom_reset_email.html',
'extra_email_context': extra_context
}
只需确保您的 extra_context
不会覆盖现有密钥:email
、token
、domain
、site_name
、user
, uid
和 protocol
已经在使用中。
类似于这个问题
class CustomPasswordResetSerializer(PasswordResetSerializer):
def get_email_options(self):
return {
'domain_override': settings.FRONTEND_URL,
'email_template_name': 'registration/custom_reset_email.txt',
'html_email_template_name': 'registration/custom_reset_email.html',
}
但除了自定义模板之外,我还想添加自定义 context。有简单的方法吗?
PasswordResetSerializer
使用 django.contrib.auth.forms
中的 PasswordResetForm
。 PasswordResetForm
的 save()
方法接受参数 extra_email_context
。因此,您需要做的就是将 extra_email_context
添加到 return:
def get_email_options(self):
extra_context = {...} # your extra context parameters
return {
'domain_override': settings.FRONTEND_URL,
'email_template_name': 'registration/custom_reset_email.txt',
'html_email_template_name': 'registration/custom_reset_email.html',
'extra_email_context': extra_context
}
只需确保您的 extra_context
不会覆盖现有密钥:email
、token
、domain
、site_name
、user
, uid
和 protocol
已经在使用中。