Продукты не удаляются из корзины
Сначала в моем коде была ошибка, затем я спросил об этом в StackOverflow.
Потом кто-то помог мне исправить эту ошибку. Вот ссылка: get() вернул более одного OrderProduct - он вернул 3 [Первая ошибка][1]
Но теперь у меня новая проблема.
Продукты не удаляются из корзины, когда кто-то их заказал. Я не знаю, почему это произошло.
Но до первого исправления товары удалялись из корзины успешно. Теперь первая ошибка исправлена, но я столкнулся со второй ошибкой. Пожалуйста, помогите мне, товары не удаляются из корзины.
Я уже разместил ссылку на мою первую ошибку. Вот мой views.py после исправления первой ошибки:
Нелегко быть уверенным без полного контекста. Это предположения и методология того, как вы могли бы отладить это:
Двойная проверка того, что находится внутри сессии
Это выглядит неправильно:
if not request.user.is_authenticated:
session = request.session
cart = session.get(settings.CART_SESSION_ID)
del session["cart"]
Для чего объявляется cart
? Но затем удаляем ключ с именем. 'cart'
. Вы уверены в этом?
В верхней части вашей функции
import pprint
try:
session = request.session
cart = session.get(settings.CART_SESSION_ID)
print(f'Card session ID: {settings.CART_SESSION_ID}')
print(pprint.pprint(session))
print(pprint.pprint(cart))
except Exception as e:
print(e)
Очистить корзину при выходе из системы
Не зная наверняка, вот лучший снимок, а также больше отладочной информации.
from django.conf import settings
from django.core.exceptions import PermissionDenied
from django.shortcuts import redirect
try:
if not request.user.is_authenticated:
# You would likely want to remove this exception as redirect them
raise PermissionDenied
else:
customer = request.user.customer
order, created = Order.objects.get_or_create(customer=customer, complete=False)
order_product = OrderProduct.objects.filter(order=order).first()
if order_product is None:
order_product = OrderProduct(order=order)
order_product.delete()
order.save().pop()
messages.success(
request, "Заказ успешно оформлен. Проверьте свою электронную почту!!!"
)
# Clear the card after success
session = request.session
cart = session[settings.CART_SESSION_ID]
print(cart) # find what you need to delete here, if it's the object at all
del session[settings.CART_SESSION_ID]
except PermissionDenied as e: # This is a guess, you need to handle what happens here
print('Attempting to purchase while not authenticated')
return redirect('%s?next=%s' % (settings.LOGIN_URL, request.path))
except Exception as e:
print(f'Unhandled exception, you need to write code for this: {e}')