django python social auth написать письмо

Я использую Python Social Auth для входа в систему. После создания пользователя я хочу отправить пользователю электронное письмо. Для этого я пишу пользовательский конвейер

def send_confirmation_email(strategy, details, response, user=None, *args, **kwargs):
if user:
    if kwargs['is_new']:
        template = "email/social_registration_confirm.html"
        subject = "Account Confirmation"
        email = user.email
        print(user.username)
        username = user.username
        kwargs.update(subject=subject, email=email, username=username)
        notification_email.delay(template, **kwargs)

я использую celery отправить по электронной почте. Когда я отправляю письмо, я получаю сообщение об ошибке <UserSocialAuth: some_username> is not JSON serializable

Почему я получаю эту ошибку. notification_email работает для других функций отправки электронной почты.

Нужно предложение. Спасибо

1 ответ

Решение

JSON принимает только несколько типов данных: нуль, массивы, логические значения, числа, строки и объекты.

Итак, все остальное должно быть выражено как один из этих типов.

Я думаю, что **kwargs что вы отправляете notification_email содержит тип данных, который не может быть выражен как JSON.

Чтобы решить эту проблему, отправьте только необходимые аргументы, а не весь **kwargs,

Я бы создал словарь и включил в него все:

var args = dict()

args['username'] = username
args['template'] = template
# other arguments

notification_email.delay(args)

Я надеюсь, что это помогает.

Другие вопросы по тегам