Объект Django-cart всегда пуст
Я разрабатываю веб-приложение для электронной коммерции с использованием Django. После того, как я реализовал нижний колонтитул, пагинацию и строку поиска, кнопка "Добавить в корзину" перестала работать. Единственное, что я предположил, это проблема с кэшем, поэтому я добавил декоратор @never_cache над представлениями cart/checkout, однако кнопка по-прежнему не работает, и при осмотре объект cart пуст даже после нажатия кнопки. Я не уверен, в чем причина этого.
main.html
В этом шаблоне я написал JS логику для корзины, навигационной панели и панели поиска.
views.py
store используется для получения данных о товарах в корзине, obj = Carousel.objects.all() получает заголовок и изображение на карусели (только на главной странице). Пагинация показывает 16 товаров на странице.
cart используется для получения cartData текущей сессии и соединения front-end с back-end (метод Checkout аналогичен).
updateItem метод имеет 2 оператора печати: print('Action:', action) print('Product:', productId) в качестве подтверждения, когда пользователь добавляет/удаляет товары из корзины.
def store(request):
data = cartData(request)
cartItems = data['cartItems']
order = data['order']
items = data['items']
obj = Carousel.objects.all()
product_list = Product.objects.all()
page = request.GET.get('page', 1)
paginator = Paginator(product_list, 16)
try:
products = paginator.page(page)
except PageNotAnInteger:
products = paginator.page(1)
except EmptyPage:
products = paginator.page(paginator.num_pages)
context = {
'products': products,
'cartItems': cartItems,
'obj': obj,
}
return render(request, 'store/store.html', context)
@never_cache
def cart(request):
data = cartData(request)
cartItems = data['cartItems']
order = data['order']
items = data['items']
context = {'items': items, 'order': order, 'cartItems': cartItems}
return render(request, 'store/cart.html', context)
@never_cache
def checkout(request):
data = cartData(request)
cartItems = data['cartItems']
order = data['order']
items = data['items']
context = {'items': items, 'order': order, 'cartItems': cartItems}
return render(request, 'store/checkout.html', context)
def updateItem(request):
data = json.loads(request.body)
productId = data['productId']
action = data['action']
print('Action:', action)
print('Product:', productId)
customer = request.user.customer
product = Product.objects.get(id=productId)
order, created = Order.objects.get_or_create(customer=customer, complete=False)
orderItem, created = OrderItem.objects.get_or_create(order=order, product=product)
if action == 'add':
orderItem.quantity = (orderItem.quantity + 1)
elif action == 'remove':
orderItem.quantity = (orderItem.quantity - 1)
orderItem.save()
if orderItem.quantity <= 0:
orderItem.delete()
return JsonResponse('Item was added', safe=False)
Полезно знать, что после того, как я реализовал пагинацию, я загрузил свой окончательный код на github, и через некоторое время пагинация также перестала работать.
Спасибо за ваше время