Аутентификация возвращает None в django rest frame work API
views.py
@api_view(['POST'])
def login(request):
data = {}
email = request.data.get('email')
password = request.data.get('password')
user = authenticate(email = email, password = password)
U = User.objects.get(email=email)
if user is not None:
login(request, user)
data['response'] = 'successfully logged in'
elif Userprofile.objects.filter(email=email).exists() == False:
data['response'] = 'user does not exist'
elif U.is_active == False:
data['response'] = 'Please verify your email'
else:
data['response'] = 'invalid password'
return JsonResponse(data)
otp=random.randint(11111,99999)
@api_view(['POST'])
def signup(request):
serializer = UserprofileSerializer(data=request.data)
data = {}
if serializer.is_valid():
name = serializer.validated_data['name']
email = serializer.validated_data['email']
phone_number = serializer.validated_data['phone_number']
password = make_password(serializer.validated_data.get('password'))
account = Userprofile.objects.create_user(name = name, email = email, phone_number = phone_number, password = password)
data['response'] = 'successfully registered a new user'
send_mail(
'Welcome to Trycompound',
'Your OTP is '+str(otp),
EMAIL_HOST_USER,
[email],
)
user = User.objects.get(email=email)
user.otp = otp
user.save()
else:
data = serializer.errors
return JsonResponse(data)
Я действительно не могу понять, что не так, потому что я действительно сделал это с обычными шаблонами, и когда я попробовал это с django rest framework, я не могу войти в систему, потому что authenticate возвращает 'None'. и да, пользователь активен, в базе данных написано 1.
Функция
authenticate не вернет ничего, если учетные данные недействительны. Она вернет объект пользователя, если учетные данные действительны. Нажмите здесь для получения дополнительной информации и принимает имя пользователя и пароль как параметры
В этом коде нет проблем, проблема в создании пользователей, я не могу правильно задать пароль.