Почему я получаю 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.