Django Sessions Login

33 views Asked by At

in the following code section of my Django project, I have a function login_view. This function is supposed to log in a user. My question would be how I can use Django's sessions to start a separate session at each login:

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"))
        else:
            return render(request, "users/login.html", {
                "message": "Invalid credentials"
            })   
    return render(request, "users/login.html")

This is what i tried:

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:
            request.session['username'] = username
            request.session['password'] = password
            request.session['user'] = user
            login(request, user)
            return HttpResponseRedirect(reverse("index"))
        else:
            return render(request, "users/login.html", {
                "message": "Invalid credentials"
            })   
    return render(request, "users/login.html")
1

There are 1 answers

0
Bavaliya Nikunj On

Tyr this method :

 def login(request):
        if "username" in request.session:
            return redirect("home")
        if request.method=="POST":
            username=request.POST.get('username')
            password=request.POST.get('password')
    
            user=user_details.objects.filter(username=username,password=password)
            if user.exists():
                messages.success(request, 'Successfully Logged In')
                request.session["username"]=username
                return redirect('home')
            else:
                context["error"] = "Invalid username or password"
    
    
        return render(request,'login.html',context=context)