Pankaj
Pankaj

Reputation: 229

how to check logged in user in context processors file in django

I am using context processors for showing total products in cart and other details in my project's header and footer. This is my file for context processors file "custom_context.py"

from models import Event, Ticket_Cart_details

def get_base_content(request):
    music_events = Event.objects.all().filter(category='music', status = True).values('id','event_title').order_by('-id')[:4]
    sports_events = Event.objects.all().filter(category='sports', status = True).values('id','event_title').order_by('-id')[:4]
    experience_events = Event.objects.all().filter(category='experience', status = True).values('id','event_title').order_by('-id')[:4]
    lifestyle_events = Event.objects.all().filter(category='lifestyle', status = True).values('id','event_title').order_by('-id')[:4]

The above code does not contain any information about logged in user now i have to write a code in which i have to get data of logged in user.

from models import Event, Ticket_Cart_details

def get_base_content(request):
    music_events = Event.objects.all().filter(category='music', status = True).values('id','event_title').order_by('-id')[:4]
    sports_events = Event.objects.all().filter(category='sports', status = True).values('id','event_title').order_by('-id')[:4]
    experience_events = Event.objects.all().filter(category='experience', status = True).values('id','event_title').order_by('-id')[:4]
    lifestyle_events = Event.objects.all().filter(category='lifestyle', status = True).values('id','event_title').order_by('-id')[:4]

    if request.user.is_authenticated():
        current_cart_products = Ticket_Cart_details.objects.all().filter(user_id=request.user.id, session_id=request.session.session_key)
    current_cart_products = Ticket_Cart_details.objects.all().filter(session_id=request.session.session_key)

In the above code "request" will not work, so how can i get records of logged in user using this

Upvotes: 1

Views: 375

Answers (1)

heber camargo
heber camargo

Reputation: 33

You are using request well, but when you work with context processors, you have to return all the data that you want. For example:

def get_base_content(request):
    music_events = Event.objects.all().filter(category='music', status=True).values('id','event_title').order_by('-id')[:4]
    sports_events = Event.objects.all().filter(category='sports', status=True).values('id','event_title').order_by('-id')[:4]
    return {"music_events": music_events,
            "sports_events": sports_events ,
            }

Additionally, for the problems with user not allowed or not logged in, you have to handle it with a anonymous data or something like this.

def get_base_content(request):
    if not request.user:
        music_events = 'none'
        sports_events = 'none'

Upvotes: 1

Related Questions