Продукты не удаляются из корзины

Сначала в моем коде была ошибка, затем я спросил об этом в 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}')
Вернуться на верх