Home > Enterprise >  UnboundLocalError at /signin/ local variable 'user' referenced before assignment in Django
UnboundLocalError at /signin/ local variable 'user' referenced before assignment in Django

Time:09-26

Function to let the user to login as follows=>


Obviously this error pops

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")                  
            
           

CodePudding user response:

It's because user = authenticate(request, username=username, password =password) runs only if request.method == 'POST'. If you do a GET request user won't be assigned.

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")   
  • Related