Imthiaz Muhassin
Imthiaz Muhassin

Reputation: 23

I'm getting a KeyError while trying to redirect to homepage in Django framework

From my views.py, in this class given below

class Home(TemplateView):

    model_name = AccountInfo
    template_name = "BudgetApp/Home.html"

    def get(self, request, *args, **kwargs):
        user = request.session["username"]
        context={}
        context["user"] = user
        return render(request,self.template_name,context)

Apparently, I'm getting a key error:'username'. Could you please help me out on this? This is probably the main reason why it doesn't redirect to the homepage after login for me.

Upvotes: 0

Views: 302

Answers (2)

Paulo Aguilar
Paulo Aguilar

Reputation: 26

Just use

request.user

It will return a User object if is authenticated and a AnonymousUser if it isn't. Something like:

If request.user.is_authenticated:
     context["user"]=request.user

Read more about in Django Docs https://docs.djangoproject.com/en/3.0/ref/request-response/#django.http.HttpRequest.user

Upvotes: 1

Muhammad Zeshan Arif
Muhammad Zeshan Arif

Reputation: 475

Replace with following code ll resolve your KeyError.

class Home(TemplateView):

    model_name = AccountInfo
    template_name = "BudgetApp/Home.html"

    def get(self, request, *args, **kwargs):
        user = request.session.get("username")
        context={}
        if user:
            context["user"] = user
        return render(request,self.template_name,context)

Upvotes: 0

Related Questions