Я отображаю свою навигационную панель, используя только html
. На моей навигационной панели я показываю количество элементов, текущих в моей корзине покупок через request.session.cart_items
, где cart_items
- моя переменная сеанса
Когда я добавляю товары в свою корзину, мои cart_items
меняются, и я вижу, что это действительно изменилось, когда я использую print(request.session.cart_items)
Проблема в том, что мой HTML показывает только обновленный request.session.cart_items
, когда яобновите страницу. Как сделать так, чтобы страница обновлялась автоматически после изменения request.session.cart_items
?
Вот мой navbar.html
<nav class="main-nav">
<ul>
<li>
<a href="/">Painting Website</a>
</li>
<li>
<a href="/">{{ request.session.cart_items}}</a>
</li>
</ul>
</nav>
Здесь также мой CartUpdateAPIView(APIView)
из моего views.py
если это поможет
class CartUpdateAPIView(APIView):
permission_classes = [permissions.AllowAny]
def get(self, request, pk=None, *args, **kwargs):
product_id = request.get('product_id')
product_obj = Painting.objects.get(pk=product_id)
cart_obj, new_obj= Cart.objects.new_or_get(request)
#remove from cart if already in cart
if product_obj in cart_obj.products.all():
cart_obj.products.remove(product_obj)
#add to cart if not in cart already
else:
cart_obj.products.add(product_obj) #adding to many-to-many
return redirect("cart-api:cart-list")
def post(self, request, pk=None, *args, **kwargs):
product_id = request.data['products'][0]
#to make sure that product_id is actually coming through
if product_id is not None:
try:
#getting an instance of the painting from the Painting model
product_obj = Painting.objects.get(id=product_id)
except Painting.DoesNotExist:
print("Sorry this product is out of stock.")
cart_obj, new_obj = Cart.objects.new_or_get(request)
#remove from cart if already in cart
if product_obj in cart_obj.products.all():
cart_obj.products.remove(product_obj)
#add to cart if not in cart already
else:
cart_obj.products.add(product_obj) #adding to many-to-many
#getting the total number of items in cart. need this to show the number of items in cart in the nav bar
request.session['cart_items'] = cart_obj.products.count()
return redirect("cart-api:cart-list")
Большое спасибо заранее!