먼저 manage.py 가 위치한 root 디렉토리에 'utils'라는 파이썬 패키지 폴더를 만들고, 그 안에 context_processors.py 파일을 만든다.
이제 함수를 만든다.(나는 수량을 표시하는 함수를 만듬)
# utils/context_processors.py
from cart.models import *
def notification(request):
if request.user.is_authenticated:
current_user = request.user
numbers = Cart.objects.filter(user_id=current_user)
number = len(numbers)
else:
number = None
return {'number': number,}
#settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
...
'utils.context_processors.notification',
....
],
},
},
]
그래서 아래 함수에서 request.user.is_authenticated
를 통해 로그인 시에만 number 데이터를 전달하고,
아닐 시에는 number=None으로 지정하였더니 에러가 해결되었다.
# utils/context_processors.py
from cart.models import *
def notification(request):
if request.user.is_authenticated:
current_user = request.user
numbers = Cart.objects.filter(user_id=current_user)
number = len(numbers)
else:
number = None
return {'number': number,}