簡體   English   中英

Django 上下文處理器'AnonymousUser' object 不可迭代

[英]Django context processor 'AnonymousUser' object is not iterable

我是 Django 的新手,並且有下面的上下文處理器,它傳遞了一些顯示在 header 中的數據。 在用戶注銷之前一切正常,這應該將他們引導回登錄屏幕,但是我收到以下錯誤。

錯誤 1

這是代碼

from . models import Job
from datetime import date

def add_variable_to_context(request):

    today = date.today()
    engineers_jobs = Job.objects.filter(date_due__lte = today).filter(assigned_to=request.user)
    engineer_overdue = 0
    for job in engineers_jobs:
        engineer_overdue += 1

    return {
        'engineers_jobs': engineers_jobs,
        'engineer_overdue':engineer_overdue,
    }

然后我嘗試了以下

from . models import Job
from datetime import date

def add_variable_to_context(request):

    if request.user.is_authenticated:
        today = date.today()
        engineers_jobs = Job.objects.filter(date_due__lte = today).filter(assigned_to=request.user)
        engineer_overdue = 0
        for job in engineers_jobs:
            engineer_overdue += 1

        return {
            'engineers_jobs': engineers_jobs,
            'engineer_overdue':engineer_overdue,
        }

但顯示以下錯誤錯誤2 有人可以幫我哪里出錯嗎?

謝謝

上下文處理器必須返回一個字典。

當用戶未登錄時,您當前返回None ,您應該返回一個空字典

from . models import Job
from datetime import date

def add_variable_to_context(request):

    if request.user.is_authenticated:
        today = date.today()
        engineers_jobs = Job.objects.filter(date_due__lte = today).filter(assigned_to=request.user)
        engineer_overdue = 0
        for job in engineers_jobs:
            engineer_overdue += 1

        return {
            'engineers_jobs': engineers_jobs,
            'engineer_overdue':engineer_overdue,
        }
    return {}

暫無
暫無

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

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