在django rest框架中验证验证代码



我试图通过发送代码来验证电子邮件,第一步是每当用户输入他的电子邮件时生成代码,将邮件中的代码发送给他,然后验证此代码并返回响应。这就是我处理这个问题的方法:我创建了一个名为Email_for_Verification的模型,有两个字段(email, code),代码是随机生成的,当用户输入他的电子邮件时,我创建了这个模型的实例,我将生成的代码发送到电子邮件上,在第二步中,用户输入接收到的代码,我将继续使用名为:Verify_code的视图进行验证。但是我遇到了一个错误

'QuerySet' object has no attribute 'code'

我有以下问题:这是正确的方法吗?为什么我遇到这个错误?

下面是我的代码:

Models.py

def generate_activation_code():
return int(''.join([str(random.randint(0,10)) for _ in range(6)]))
class Email_for_Verification(models.Model):
email = models.EmailField(
max_length=100, verbose_name='email', unique=True)
code = models.CharField(max_length=6, default=generate_activation_code)

Views.py

class Verify_code(APIView):
def post(self, request):
data = request.data
code = data.get('code')
email = data.get('email')
email_for_verification = models.Email_for_Verification.objects.filter(email=email)
if code == email_for_verification.code:
return Response({"valid" : "Valid code", "email": email}, status=status.HTTP_404_NOT_FOUND)

在可浏览api中发送的响应:

{
"email":"dummy@mail.com",
"code":487954
}

请注意,我已经从管理面板为这封电子邮件生成了一个代码。

filter()返回对象列表。您需要使用get()

models.Email_for_Verification.objects.get(email=email)