Я пытаюсь разработать сайт для интернет-магазина с Django. На мой взгляд, когда он добавляет новый продукт в корзину, я хочу дать сообщение об успехе, но, поскольку у меня есть нумерация страниц, он всегда перенаправляется на мою домашнюю страницу, что очень раздражает пользователя.
Когда я на своей странице = 2, я хочу добавить товар и остаться на этой странице, а не перенаправляться на домашнюю страницу.
Мои views.py:
from django.shortcuts import render, redirect, HttpResponseRedirect, Http404
from products.models import Product
from .models import Cart, CartItem
from django.contrib import messages
from django.urls import reverse
from django.utils.safestring import mark_safe
def cart(request):
try:
the_id = request.session['cart_id']
except:
the_id = None
if the_id:
cart = Cart.objects.get(id=the_id)
context = {"cart":cart}
else:
empty_message = "Your cart is empty, please keep shopping."
context = {"empty": True, "empty_message": empty_message}
template = 'shopping_cart/cart.html'
return render(request, template, context)
def add_to_cart(request, slug):
request.session.set_expiry(120000)
try:
qty = request.GET.get('qty')
update_qty = True
except:
qty = None
update_qty = False
try:
the_id = request.session['cart_id']
except:
new_cart = Cart()
new_cart.save()
request.session['cart_id'] = new_cart.id
the_id = new_cart.id
cart = Cart.objects.get(id=the_id)
try:
product = Product.objects.get(slug=slug)
except Product.DoesNotExist:
raise Http404
except:
pass
cart_item, created = CartItem.objects.get_or_create(cart=cart, product=product)
messages.success(request, f'Product added to Cart')
return redirect('myshop-home')
if update_qty and qty:
if int(qty) == 0:
cart_item.delete()
else:
cart_item.quantity = qty
cart_item.save()
else:
pass
# if not cart_item in cart.items.all():
# cart.items.add(cart_item)
# messages.success(request, mark_safe("Product added to cart. Go to <a href='cart/'>cart</a>"))
# return redirect('myshop-home')
# else:
# cart.items.remove(cart_item)
# messages.success(request, mark_safe("Product removed from cart"))
new_total = 0.00
for item in cart.cartitem_set.all():
line_total = float(item.product.price) * item.quantity
new_total += line_total
request.session['items_total'] = cart.cartitem_set.count()
cart.total = new_total
cart.save()
return HttpResponseRedirect(reverse('cart'))