Что означает ошибка AttributeError в /login_user/?

Моя цель - получить все товары, которые пользователь добавил в корзину, поэтому я решил получить модель ShopingCart из контекстного процессора. Я добавил ее в контекстный процессор, и она хорошо работает. Но проблема в том, что когда я пытаюсь выйти из системы, то получаю ошибку. Где собственно возникла проблема? помогите мне😢...

models.py:

class ShopingCart(models.Model):
    User = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='UserShoppingCartRelatedName',on_delete=models.CASCADE)
    Product = models.ForeignKey(Products, related_name='ShoppingCartRelatedName',on_delete=models.CASCADE)

context_processors:

def ShoppingCart(request):
    return {"ShoppingCart":request.user.UserShoppingCartRelatedName.all()}

error:

AttributeError at /login_user/
'AnonymousUser' object has no attribute 'UserShoppingCartRelatedName'
Request Method: GET
Request URL:    http://127.0.0.1:8000/login_user/
Django Version: 4.0.4
Exception Type: AttributeError
Exception Value:    
'AnonymousUser' object has no attribute 'UserShoppingCartRelatedName'
Exception Location: D:\1_WebDevelopment\17_Ecomerce Website\ecomerce site\env\lib\site-packages\django\utils\functional.py, line 259, in inner
Python Executable:  D:\1_WebDevelopment\17_Ecomerce Website\ecomerce site\env\Scripts\python.exe
Python Version: 3.9.5
Python Path:    
['D:\\1_WebDevelopment\\17_Ecomerce Website\\ecomerce site',
 'c:\\users\\dcl\\appdata\\local\\programs\\python\\python39\\python39.zip',
 'c:\\users\\dcl\\appdata\\local\\programs\\python\\python39\\DLLs',
 'c:\\users\\dcl\\appdata\\local\\programs\\python\\python39\\lib',
 'c:\\users\\dcl\\appdata\\local\\programs\\python\\python39',
 'D:\\1_WebDevelopment\\17_Ecomerce Website\\ecomerce site\\env',
 'D:\\1_WebDevelopment\\17_Ecomerce Website\\ecomerce '
 'site\\env\\lib\\site-packages']
Server time:    Tue, 09 Aug 2022 11:48:23 +0000

Похоже, что вы не вошли в систему!

'AnonymousUser' object has no attribute 'UserShoppingCartRelatedName'

AnonymousUser - это имя по умолчанию для человека не вошедшего в систему!

Проверьте, не является ли пользователь никем и аутентифицирован.

def ShoppingCart(request):
    if request.user is not None and request.user.is_authenticated():
        return {"ShoppingCart":request.user.UserShoppingCartRelatedName.all()}
    else:
         return {}
Вернуться на верх