主要是实现效果如下图:
这些数据,我们主要存在session中,因为前面的点餐信息之类的,我们也都是存在session中的。
实现购物车的步骤:
(1). 创建点餐购物车视图文件
(2). 配置购物车的url路由信息
(3). 实现购物车总金额计算
=========================================================================
(1). 创建点餐购物车视图文件
-
在web前台应用中的views目录下创建一个购物车操作视图文件cart.py
-
编辑此视图文件:
web/views/cart.py
代码如下:
#购物车信息管理视图文件
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
from django.urls import reverse
def add(request,pid):
'''添加购物车'''
#从session中的菜品列表productlist中获取要添加购物车中的菜品信息
product = request.session['productlist'][pid] #取出了要购买的菜品信息
product['num'] = 1 #追加一个购买数量,默认为1
#从session中获取购物车cartlist信息,若没有默认为空字典{}
cartlist = request.session.get("cartlist",{})
#判断购物车中是否已存在要购买的商品
if pid in cartlist:
cartlist[pid]['num'] += product['num'] #累加购买量,其实就是直接加1
else:
cartlist[pid] = product #将菜品放入购物车中
#将购物车中的商品信息放回到session中
request.session['cartlist'] = cartlist
print(cartlist)
# 跳转点餐首页
return redirect(reverse('web_index'))
def delete(request,pid):
'''删除购物车中的商品'''
#从session中获取名字为cartlist的购物车信息,若没有默认为空字典{}
cartlist = request.session.get('cartlist',{})
del cartlist[pid]
# 将购物车中的商品信息放回到session中
request.session['cartlist'] = cartlist
#跳赚到点餐首页
return redirect(reverse('web_index'))
def clear(request):
'''清空购物车'''
request.session['cartlist'] = {}
return redirect(reverse('web_index'))
def change(request):
'''购物车信息修改'''
cartlist = request.session['cartlist'] #从session中获取名字为cartlist的购物车信息,若没有返回空字典{}
shopid = request.GET.get("pid",0) #获取要修改的菜品id,如果取不到,就默认为0
num = int(request.GET.get('num',1)) #获取要修改的数量,如果取不到,就默认为1
if num < 1:
num = 1
cartlist[shopid]['num'] = num #修改购物车的数量
request.session['cartlist'] = cartlist
return redirect(reverse('web_index'))
可以先把函数的名字写好,函数内容先用pass,然后就可以先把url路由也写好。