Почему я получаю AttributeError: объект 'NoneType' не имеет атрибута 'email'

Я пытаюсь проверить otp. Таблица в db для otp содержит email и otp_no. Я получаю ожидаемый результат, если otp, предоставленный пользователем, верен, но получаю "AttributeError: 'NoneType' object has no attribute 'email'", если otp неверен.

Ниже приведен код:

@api_view(['POST'])
def verifyOtp(request):
    email = request.data.get('email')
    otp_no = request.data.get('otp_no')
    res = dict()
    if email!= None and otp_no!= None:
        result = Otp.objects.filter(email=email, otp_no = otp_no).first()
        if len(result.email)> 0:
                res['isOtpVerified'] = True  if otp_no == result.otp_no else False
                return JsonResponse(res)
        else: 
            res['emailExist'] = False
            return JsonResponse(res)

чего мне не хватает в коде?

Возможно, в базе данных нет записей, удовлетворяющих вашим фильтрам. Вы фильтруете Otp.objects.filter(email=email, otp_no = otp_no).first(). Вы проверяете, что email != None и otp_no != None (кстати, более понятный способ сделать это - написать email is not None and otp_no is not None). Но даже если они не None, пользователь может передать неверный email или неверный otp_no, которые не существуют в БД. Поэтому вы можете иметь значение None в переменной результата, что приведет к ошибке AttributeError.

Вернуться на верх