我正在构建一个电子商务网站,我构建了一个特定的视图来处理在购物车中添加产品,在添加产品后,我的用户被重定向到商店。但问题是,我想知道用户是否在商店视图中,所有产品都在哪里,或者他是否在product_detail视图中,只显示一个特定用户。因此,如果用户在商店视图中,我希望在将产品添加到购物车后将他重定向到商店视图。但是如果他在product_detail视图中,我希望他被重定向到这个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"))
这将重定向到引用页面,您的命名URLstore
将是一个备用重定向。
值得注意的是,您可能在某些时候需要基于条件的多个重定向,在这种情况下,您没有理由不能像这样添加它们:
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')
return redirect(request.META.get("HTTP_REFERER", "store"))
else:
order.products.add(order_item)
messages.info(request, 'This item was added to your cart')
return redirect('some_other_page')
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')