购物车及vue前端

购物车

购物车表创建

关联用户、关联商品、购买的数量

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十年丿之后

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值