How to make a loop in views.py file through my Django Session Cart Data

问题描述 投票:0回答:0

我添加到 Django 会话的数据。我想计算单个数据:(数量和价格)并且我想计算我的(总量)

 dict_items([('1', {'name': 'Talon Lott', 'image': '/media/images/products/1.png', 'reg_price':      '958.0', 'dis_price': '844.0', 'qty': 1}),
('2', {'name': 'Lionel Owens', 'image':  '/media/images/products/2.png', 'reg_price': '684.0', 'dis_price': '221.0', 'qty': '1'}),
('3', {'name': 'Brenna Chan', 'image': '/media/images/products/3.png', 'reg_price': '728.0', 'dis_price': '177.0', 'qty': 1}),
('4', {'name': 'Amos Osborne', 'image': '/media/images/products/4.png', 'reg_price': '453.0', 'dis_price': '547.0', 'qty': '1'})])

但是在 views.py 文件中,当我循环此数据时,我只得到 id:1 数据。

{'name': 'Talon Lott', 'image': '/media/images/products/1.png', 'reg_price': '958.0', 'dis_price': '844.0', 'qty': 1}

那么我怎样才能为我的会话数据创建一个循环

这是我的 views.py 文件 我在 Add_to_cart 按钮上使用了 Jquey ajax 来添加我的产品 添加到购物车

# Add To Cart 
def add_to_cart(request):
    card_product = {}

    card_product[str(request.GET['id'])] ={
        'name': request.GET['name'],
        'image': request.GET['image'],
        'reg_price': request.GET['reg_price'],
        'dis_price': request.GET['dis_price'],
        'qty': request.GET['qty']
    }
    # print(card_product)
    # print(id, name, image, reg_price, dis_price, qty)
    if 'cartdata' in request.session:
        
        if str(request.GET['id']) in request.session['cartdata']:
            card_data = request.session['cartdata']
            card_data[str(request.GET['id'])]['qty'] = int(card_product[str(request.GET['id'])]['qty']) 
            card_data.update(card_data)
            request.session['cartdata'] = card_data
        else:
            card_data = request.session['cartdata']
            card_data.update(card_product)
            request.session['cartdata']= card_data

    else:
        request.session['cartdata'] = card_product

    return JsonResponse({
        'data':request.session['cartdata'],
        'totalitems':len(request.session['cartdata'])
        })
    

  

# Cart Page View

class CartListView(IndexView):
    template_name = 'cart/cart.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        total_amounts = 0
        saving = 0

        if 'cartdata' in self.request.session:
            for pro_id, item in self.request.session['cartdata'].items():

                total_amounts += int(item['qty']) * float(item['dis_price'])
                saving += float(item['reg_price']) - float(item['dis_price'])
                print(item)

                context={
                    'total_amounts': total_amounts,
                    'saving': saving,
                    'cart_data': self.request.session['cartdata'],
                    'totalitems': len(self.request.session['cartdata'])
                }
        
                return context
        else:
            context={
                    'total_amounts': total_amounts,
                    'cart_data':0,
                    'totalitems': 0
                }
        
            return context


python django django-views django-sessions
© www.soinside.com 2019 - 2024. All rights reserved.