我在我的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 变量时,将显示一个随机字符串,因此这不是问题。
有人知道这个问题是什么吗?谢谢。
答案 0 :(得分:0)
取决于所使用的Python版本,请检查您的User
模型对象,并确保它具有一个__unicode__
方法,该方法返回除None
之外的其他值。如果您使用的是Python 3,这是将您的对象变成字符串表示形式的方式(在Python 2中,该字符串曾经是__str__
,因此请确保此处是字符串值。