Я хочу написать условие if, основанное на том, какой url был у моего пользователя до того, как он был принят для определенного вида корзины.
Я создаю сайт электронной коммерции и создал специальное представление для работы с добавлением товаров в корзину, и после добавления товара, мой пользователь перенаправляется в магазин. Но вот в чем дело, я хочу увидеть, был ли мой пользователь в представлении магазина, где находятся все продукты, или он был в представлении product_detail, где он показывает только конкретного пользователя. Итак, если пользователь был в представлении магазина, я хочу, чтобы после добавления товара в корзину он был перенаправлен в представление магазина. Но если он находился в представлении "Детали товара", я хочу, чтобы он был перенаправлен на это представление "Детали товара". В общем, я хочу найти способ увидеть, в каком представлении или url находился пользователь, а затем перенаправить его таким образом. Я также хотел бы использовать только Django и никакого JavaScript, если это возможно.
Вот мое представление, которое добавляет товар в корзину.
def add_to_cart(request, slug):
product = get_object_or_404(Product, slug=slug)
order_item, created = OrderItem.objects.get_or_create(
product=product,
user=request.user
)
order_qs = Order.objects.filter(user=request.user, complete=False)
if order_qs.exists():
order = order_qs[0]
if order.products.filter(product__slug=product.slug).exists():
order_item.quantity += 1
order_item.save()
messages.info(request, 'This item quantity was updated')
else:
order.products.add(order_item)
messages.info(request, 'This item was added to your cart')
else:
order = Order.objects.create(user=request.user)
order.products.add(order_item)
messages.info(request, 'This item was added to your cart')
return redirect('store')
Вместо:
return redirect('store')
Попробуйте добавить:
return redirect(request.META.get("HTTP_REFERER", "store"))
Это приведет к перенаправлению на ссылающуюся страницу, а ваш именованный URL store
будет резервным перенаправлением.