UnboundLocalError в /вход/ локальная переменная «пользователь», на которую ссылаются перед назначением в Django

#django #function #authentication

Вопрос:

Функция, позволяющая пользователю войти в систему следующим образом=>


Очевидно, что эта ошибка всплывает

 def login_view(request):
  if request.method == 'POST':

    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password =password  )
  if user is not None:
    login(request, user)
    return HttpResponseRedirect(reverse("index"))
  elif user is None:
                      return render(request, "covi/signin.html", {
            "message": "Invalid username and/or password."
        })
  else:
                      return render(request, "covi/signin.html")                  
            
           
 

Ответ №1:

Это потому user = authenticate(request, username=username, password =password) , что работает только в том случае, если request.method == 'POST' . Если вы сделаете запрос на ПОЛУЧЕНИЕ, пользователь не будет назначен.

 def login_view(request):
  if request.method == 'POST':

    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password =password  )
    if user is not None:
      login(request, user)
      return HttpResponseRedirect(reverse("index"))
    elif user is None:
      return render(request, "covi/signin.html", {
            "message": "Invalid username and/or password."
      })
  return render(request, "covi/signin.html")   
 

Комментарии:

1. Сделал это 2 с той же проблемой :((( Спасибо за Вашу помощь!

2. есть еще одна проблема : форма пуста, когда я запускаю свой сервер 🙁

3. Представление covi.views.login_view не вернуло объект HttpResponse. Вместо этого он ничего не вернул.

4. И ДА, Ваш комментарий-абсолютная победа, Эне П. Сейчас я сталкиваюсь с другой проблемой. Все хорошо.