Ошибка при генерации случайной строки и использовании при отправке электронного письма - PullRequest
0 голосов
/ 18 октября 2019

Я пишу конечную точку в моем API, где пользователи могут сбросить свои пароли. Я использую библиотеку Python SMTP, чтобы отправить электронное письмо пользователю с кодом. Этот код представляет собой простую строку.

Я случайным образом генерирую эту строку и отправляю ее в качестве содержимого для электронного письма.

Однако, когда я отправляю запрос конечной точке, возникает ошибка:

AttributeError: У объекта 'NoneType' нет атрибута 'encode' .

Вот мой код конечной точки:

code = ''.join(random.choice(string.ascii_letters + string.digits) for _ in range(8))
content = 'Subject: {}\n\n{}'.format('Your code to reset your password:', code)
mail = smtplib.SMTP('smtp.gmail.com', 587)
mail.ehlo()
mail.starttls()
mail.login(os.environ.get('email'), os.environ.get('password'))
mail.sendmail(os.environ.get('email'), user.email, content)
mail.close()
hashedReset = make_password(code)
user.resetCode = hashedReset
user.save()
return JsonResponse({'message': 'An email has successfully been sent to the email paired with this account.'}, status=200)

models.py:

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    resetCode = models.TextField(blank=True)

    def __str__(self):
        return self.username

Когда я печатаю переменную code , отображается случайная строка, поэтомуне проблема.

Кто-нибудь знает, в чем проблема? Спасибо.

1 Ответ

0 голосов
/ 19 октября 2019

В зависимости от используемой версии Python, проверьте объект модели User и убедитесь, что у него есть метод __unicode__, который возвращает что-то отличное от None. Если вы используете Python 3, это то, как ваш объект превращается в строковое представление (в Python 2 это было __str__, поэтому убедитесь, что здесь строковое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...