购物车
购物车表创建
关联用户、关联商品、购买的数量
class Cart(models.Model):
"""
购物车模型
"""
user = models.ForeignKey('users.User', on_delete=models.CASCADE)
goods = models.ForeignKey('goods.Goods', on_delete=models.CASCADE)
goods_num = models.IntegerField(default=1)
class Meta:
db_table = 'cart'
def __str__(self):
return '购买了{}个{}'.format(self.goods_num, self.goods.name)
购物车的添加
需要进入到商品详情页
点击加入购物车(判断用户是否登录、用户登录的话,进行添加,否则跳转到登录页面)
// 加入购物车
addCart() {
// 需要判断是否登录
if(this.token) {
// 继续添加
// 实例化表单
let form_data = new FormData()
// 添加数据
form_data.append('token', this.token)
form_data.append('goods_id', this.goods_id)
form_data.append('goods_num', this.goods_num)
// 发送请求
this.axios({
url: '/cart/add_cart/',
method: 'post',
data: form_data
}).then(res => {
console.log(res.data)
})
}else{
// 跳转到登录页面
this.$router.push({
name: 'Login',
query: {
redirect: this.$route.fullPath
}
})
}
},
添加的接口
class AddCart(APIView):
def post(self, request):
token = request.data.get('token')
goods_id = request.data.get('goods_id')
goods_num = request.data.get('goods_num') # 网页接收到的数据是字符串,需要进行整型转换
# 解析token
user_info = check_token(token)
# 判断token是否失效
if user_info:
# 获取用户id
user_id = user_info.get('user_id')
# 获取当前用户的某个商品的对象,用来判断商品是否已经添加购物车之中
cart_obj = Cart.objects.filter(user_id=user_id, goods_id=goods_id).first()
# 判断商品是否已添加,如果已添加,修改数量
if cart_obj:
cart_obj.goods_num += int(goods_num)
cart_obj.save()
return Response({
'msg': '数量添加成功', 'code': 200})
# 否则的话,创建新的购物车
else