Django에서 "None Type is not iterable"수정
5727 단어 django
에러 메시지
중단점 디버그에 따르면 내가 정의한 컨텍스트 프로세서로 인해 발생하는 것으로 나타났습니다.
먼저 댓글을 달아주세요.
# settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates', os.path.join(BASE_DIR, 'templates')]
,
'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',
# 'food.context_processors.access_realtime_cart_count'
],
},
},
]
이유
이 줄에 주석을 달면 애플리케이션이 정상 상태로 전환됩니다.
컨텍스트 프로세서가 로그인 페이지에 필요한 컨텍스트를 변경한 것 같습니다.
처음으로 시스템에 들어갈 때 우리는 승인되지 않은 상태에 있습니다. 따라서 이 상황을 처리해야 합니다.
해결책
컨텍스트 프로세서를 선언하는 올바른 방법은 다음과 같습니다.
### food/context_processors.py
from .models import OrderItem, Order
# the order item number of you current cart
def access_realtime_cart_count(request):
if request.user.is_authenticated:
try:
active_order = Order.objects.get(user__username=request.user.username, status=1)
except Order.DoesNotExist:
newOrder = Order(user=request.user, total_price=0.0, status=1)
newOrder.save()
active_order = newOrder
cart_count = OrderItem.objects.filter(order_id=active_order.id).count()
return {'realtimeCartCount': cart_count} # you can access the "cart_count" variable in any tempaltes of your projec
else: # handle the unlogin
return {'realtimeCartCount': 0}
Reference
이 문제에 관하여(Django에서 "None Type is not iterable"수정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/flynncao/fix-none-type-is-not-iterable-in-django-8l5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)