簡體   English   中英

如何在 django 的上下文處理器文件中檢查登錄用戶

[英]how to check logged in user in context processors file in django

我正在使用上下文處理器來顯示購物車中的總產品以及我項目的 header 和頁腳中的其他詳細信息。 這是我的上下文處理器文件“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]

上面的代碼不包含有關登錄用戶的任何信息,現在我必須編寫一個代碼,我必須在其中獲取登錄用戶的數據。

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)

在上面的代碼中,“請求”將不起作用,那么我怎樣才能使用這個獲取登錄用戶的記錄

您很好地使用了請求,但是當您使用上下文處理器時,您必須返回所有您想要的數據。 例如:

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 ,
            }

此外,對於用戶不允許或未登錄的問題,您必須使用匿名數據或類似的方式處理它。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM