【问题标题】:'AnonymousUser' object is not iterable error when using custom context processors使用自定义上下文处理器时,“AnonymousUser”对象不是可迭代错误
【发布时间】:2021-04-01 08:40:00
【问题描述】:

我在 Django 中使用自定义上下文处理器。但是当用户登录时它工作文件但是当我尝试登录用户时它抛出'AnonymousUser'对象不可迭代

这是错误:

 TypeError at /
'AnonymousUser' object is not iterable
 Request Method:    GET
 Request URL:   http://127.0.0.1:8000/
 Django Version:    3.1
 Exception Type:    TypeError
 Exception Value:   'AnonymousUser' object is not iterable

context_processers 文件看起来像

def noti_count(request):
  count1 = Notification.objects.filter(user=request.user, seen=False)
  count2 = Notification_general.objects.filter(seen=False)
  return {"count1": count1, 'count2':count2,}

上下文处理器看起来像

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': ['templates'],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'home.context_processors.noti_count',
            'django.contrib.messages.context_processors.messages',
        ],
   },
 },
]

请帮助我,代码对于已登录的用户可以正常工作,但是当他们在注销后尝试进入登录页面时,它会抛出“AnonymousUser”对象不可迭代

【问题讨论】:

    标签: django


    【解决方案1】:

    试试看:

    def noti_count(request):
      if request.user:
          count1 = Notification.objects.filter(user=request.user, seen=False)
          ....
    

    你要数什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      相关资源
      最近更新 更多