2016-12-09 4 views
0

Привет У меня есть модель, в которой хранятся действия пользователей. Эта модель используется для отображения уведомлений для зарегистрированных пользователей. Теперь проблема в том, что код работает нормально с зарегистрированными пользователями, однако если я открою домашнюю страницу приложения после выхода из системы, появится следующая ошибка.Django: ошибка в текстовом процессоре для анонимного пользователя

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

ответ

1

Попробуйте просто добавить 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}) 
+0

Это правильное решение. спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^