Kamusta,我是Charlie!
在Day14中,我们完成了前端的购物车商品显示跟加入购物车,而今天,我们将完成购物车数量增减跟删除的後端API。
================================◉‿◉=================================
首先是加减购物车,因为我们是spinButton,所以会用v-model的值来判断,我们的API就是依照数量来做加减。
先新增PUT方法,去修改相对应的购物车数量。
一样要新增判断,判断amount为0、product找不到、user找不到都会返回对应的讯息,如果都OK的话就指定amount回去,然後save:
elif request.method == "PUT":
req = request.body
ucart = CartModel()
ucart.fromJson(req)
if ucart.amount == 0:
return R.badRequest("Cart amount can not be 0")
product = Product.objects.filter(id = ucart.product_id)
if not product:
return R.badRequest("Product does not exist!")
product = product[0]
if ucart.amount > product.stored_amount:
return R.badRequest("Add cart amount reach maximum stored amount")
user = User.objects.filter(name = ucart.username)
if not user:
return R.badRequest("User does not exist!")
user = user[0]
dbcart = Cart.objects.filter(user = user).filter(product = product)
dbcart = dbcart[0]
dbcart.amount = ucart.amount
dbcart.save()
return R.ok("amount change success")
接着测试:
再来是DELETE的部分,一样新增DELETE方法:
elif request.method == "DELETE":
由於DELETE方法不应该带任何的request body,所以我们需要用url带参数,首先修改url pattern:
url(r'/(?P<cid>[\d]{1,55})$',views.usercart),
并且增加cid参数,再判断delete,执行相对应的方法:
def usercart(request,username = None,cid = None):
elif request.method == "DELETE" and cid is not None:
cid = int(cid)
cart = Cart.objects.filter(id = cid)
if not cart:
return R.badRequest("Cart record does not exist")
cart = cart[0]
cart.delete()
return R.ok("delete success")
测试:
================================◉‿◉=================================
Day15结束了!在今天我们完成了後端的购物车数量改变跟删除,而明天我们将完成前端的购物车数量改变跟删除,See ya next day!
>>: 爬虫怎麽爬 从零开始的爬虫自学 DAY15 python回圈
铁人赛写到现在,其实主题中的内容还有很多可以实作的部分,但一方面是不确定时间到期後,铁人赛系列还能不...
点击进入React源码调试仓库。 概述 壹旦用户的交互产生了更新,那麽就会产生壹个update对象去...
此篇为番外,未收入在本篇的原因是 TypeScript 会直接影响开发,使撰写的程序语法与原本不同...
本文内容 接续昨天 ngOnDestroy 还没有记录完的内容。 ngOnDestroy 可能没被启...
前言 前面我们也已经学了不少的知识点,而这边也进入了铁人赛的最後一天,所以就来试着写一个简单的 it...