Как настроить django остальной аутентичный контекст электронной почты - PullRequest
1 голос
/ 13 февраля 2020

Аналогично этому вопросу Как настроить django rest auth пароль для сброса содержимого электронной почты / шаблон Я хотел бы настроить электронные сообщения для сброса пароля (и другие), автоматически отправляемые 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',
        }

Но в дополнение к настраиваемым шаблонам я хочу добавить пользовательский контекст . Есть ли простой способ сделать это?

1 Ответ

0 голосов
/ 13 февраля 2020

PasswordResetSerializer использует PasswordResetForm из django.contrib.auth.forms. Метод save() для PasswordResetForm принимает параметр extra_email_context. Поэтому все, что вам нужно сделать, это добавить extra_email_context в словарь вашего возврата:

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 уже используются.

...