您好我有一个存储用户操作的模型。此模型用于向登录用户显示通知。 现在问题是代码在登录用户中工作正常,但是如果我在注销后打开应用程序的主页,则会出现以下错误。
TypeError at /
'AnonymousUser' object is not iterable
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.10
Exception Type: TypeError
Exception Value:
**'AnonymousUser' object is not iterable**
Exception Location: /Library/Python/2.7/site-packages/django/utils/functional.py in inner, line 235
Python Executable: /usr/bin/python
Python Version: 2.7.10
我认为问题是因为我在我的应用程序中使用的模板上下文处理器。
请帮助解决这个问题。 上下文代码
from models import notifications
def activ_notification(request):
active = notifications.objects.filter(to_user=request.user,viewed=False)[:10]
return({'alert':active})
设置
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'task.notification.activ_notification',
],
},
},
]
答案 0 :(得分:2)
尝试在视图中添加is_authenticated检查:
def activ_notification(request):
active = []
if request.user.is_authenticated():
active = notifications.objects.filter(to_user=request.user,viewed=False)[:10]
return({'alert':active})