Проверка кода валидации в django rest framework
Я пытаюсь проверить электронную почту путем отправки кода, первый шаг - сгенерировать код, когда пользователь вводит свою электронную почту, отправить ему код по почте, затем проверить этот код и вернуть ответ. Вот как я подхожу к проблеме: Я создал модель Email_for_Verification с двумя полями (email , код), код генерируется случайным образом, я создаю экземпляр этой модели, когда пользователь вводит свой email, я отправляю сгенерированный код по электронной почте, на втором шаге пользователь вводит полученный код, и я перехожу к проверке с помощью View под названием: 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)
Ответ отправлен в browsable api:
{
"email":"dummy@mail.com",
"code":487954
}
Обратите внимание, что я уже сгенерировал код для этого письма из панели администратора.
filter()
возвращает список объектов. Вам необходимо использовать get()
models.Email_for_Verification.objects.get(email=email)