Python 第一项添加正确,但第二项未添加
我正在使用django制作一个商业网站 我使用session获取项目中的所有请求,但我面临一个问题。问题是,当我将一个产品添加到购物车时,它已成功添加,但每当我尝试同时添加另一个产品时,它在购物车中显示0个产品。我甚至不能添加数量,但当我删除第一个产品时,数量会自动添加到第二个产品中 非常令人困惑,因此我提供了截图 以下是我的视图.py:Python 第一项添加正确,但第二项未添加,python,django,Python,Django,我正在使用django制作一个商业网站 我使用session获取项目中的所有请求,但我面临一个问题。问题是,当我将一个产品添加到购物车时,它已成功添加,但每当我尝试同时添加另一个产品时,它在购物车中显示0个产品。我甚至不能添加数量,但当我删除第一个产品时,数量会自动添加到第二个产品中 非常令人困惑,因此我提供了截图 以下是我的视图.py: class Index(View): def get(self, request): cart = request.session
class Index(View):
def get(self, request):
cart = request.session.get('cart')
if not cart:
request.session['cart'] = {}
products = None
cats = Category.get_categories()
brands = Brand.get_brands()
categoryID = request.GET.get('category')
brandID = request.GET.get('brand')
if categoryID:
products = Product.get_products_by_category(categoryID)
else:
products = Product.get_all_products()
if brandID:
proucts = Product.get_brands_by_products(brandID)
else:
products = Product.get_all_products()
args = {
'products':products,
'cats': cats,
'brands': brands
}
return render(request, 'Home/index.html', args)
def post(self, request):
product = request.POST.get('product')
print(product)
cart = request.session.get('cart')
remove = request.POST.get('remove')
if cart:
quantity = cart.get(product)
if quantity:
if remove:
if quantity <= 1:
cart.pop(product)
else:
cart[product] = quantity-1
else:
cart[product] = quantity+1
else:
cart[product] = 1
else:
cart = {}
cart[product] = 1
request.session['cart'] = cart
print('cart', request.session['cart'])
return redirect('Home')
你能展示一下你在购物车中添加物品的代码吗?我提供了一个屏幕截图,你能检查一下吗??
from django import template
from django.http import HttpResponse
register = template.Library()
@register.filter(name='in_cart')
def in_cart(product, cart):
keys = cart.keys()
for id in keys:
if int(id) == product.id:
return True
return False
@register.filter(name='cart_quantity')
def cart_quantity(product, cart):
keys = cart.keys()
for id in keys:
if int(id) == product.id:
return cart.get(id)
else:
return 0;
@register.filter(name='cart_total')
def cart_total(product, cart):
return product.price * cart_quantity(product, cart)
@register.filter(name='get_total_cart_total')
def get_total_cart_total(products, cart):
total = 0
for p in products:
total += cart_total(p, cart)
return total