args = {}
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
user = authenticate(username=cd['username'], password=cd['password'])
if user is not None:
if user.is_active:
args['login_error'] = "Пользователь активен"
return JsonResponse({'args': args}, status=200)
else:
args['login_error'] = "Пользователь не активен"
return JsonResponse({'args': args}, status=201)
else:
args['login_error'] = "Не верные логин или пароль"
return JsonResponse({'args': args}, status=400)
else:
form = LoginForm()
Стандартная, даже в доках такая же. Модель пользователя сделана через AbstractBaseUser.
Проблема в том, что если логин и пароль верные, но у пользователя статус is_active == False, возвращает 400 код, а не 201. С любым другим свойством(есть ещё парочка свойств с булевым значением) всё ок, а именно с is_active работает не так, как хотелось бы. В чём может быть проблема?
У тебя есть аутентификация, но нет логина. Это отдельная функция из django.contrib.auth. login(request, auth_object)
А как это связано тут? Не понимаю.
Обсуждают сегодня