ନମସ୍କାର,我是Charlie!
在Day22当中我们完成了前端的paypal结帐,而今天我们将完成後端的订单资料API。
================================◉‿◉=================================
首先是总订单资料的部分,先在logincheck方法当中新增GET:
@logincheck('POST','GET')
接着在userorder方法当中新增order get的程序码,把user的order都过滤出来:
if request.method == "GET":
req = request.GET
if "username" not in req:
return R.badRequest("username not found")
username = req["username"]
user = User.objects.filter(name = username)
if not user:
return R.badRequest("user does not exist")
user = user[0]
userorder = Order.objects.filter(user = user)
再来我们要整理一下返回资料的格式,同一个orderno会有一个products的栏位,里面有这个订单所有包含的product:
data = []
for order in userorder:
for d in data:
if order.orderno == d["orderno"]:
d["products"].append(order.product.toJson())
d["amount"] += order.amount
break
else:
data.append({
"orderno":order.orderno,
"products":[
order.product.toJson()
],
"username":order.user.name,
"amount":order.amount,
"status":order.status,
"paypal_id":order.paypal_id,
"created_time":order.created_time,
"modified_time":order.modified_time
})
return R.ok({"data":data})
接着做测试,就可以看到同一个订单内的商品都已经归到了products里面:
接着是订单详情的部分,首先建立一个url pattern:
url(r'/(?P<orderno>[0-9A-Za-z]{22})$',views.userorder),
接着建立程序码,过滤出order中符合orderno跟username的Order:
@logincheck('POST','GET')
if request.method == "GET" and orderno:
req = request.GET
if "username" not in req:
return R.badRequest("username not found")
username = req["username"]
user = User.objects.filter(name = username)
if not user:
return R.badRequest("user does not exist")
user = user[0]
userorder = Order.objects.filter(user = user).filter(orderno = orderno)
if not userorder:
return R.badRequest("order does not exist")
data = {}
for order in userorder:
if "orderno" not in data:
product = order.product.toJson()
product["amount"] = order.amount
product["subtotal"] = order.amount * product["price"]
data = {
"id":order.id,
"orderno":order.orderno,
"products":[
product
],
"username":order.user.name,
"amount":order.amount,
"paypal_id":order.paypal_id,
"created_time":order.created_time,
"modified_time":order.modified_time,
"orderStatus":order.status,
"phone":order.user.phone,
}
else:
product = order.product.toJson()
product["amount"] = order.amount
product["subtotal"] = order.amount * product["price"]
data["products"].append(
product
)
data["amount"] += order.amount
print(data)
return R.ok(data)
接着做测试:
就完成了订单详情跟总资料的API。
================================◉‿◉=================================
Day23结束了!在今天我们完成了总订单跟订单详情的API,明天我们将完成前端的订单跟订单详情,See ya next day!
<<: 学习Python纪录Day22 - 用Kaggle上的dataset当例子
SEO代表搜索引擎优化(SEO),这是通过自然搜索引擎性能提高网站流量的数量和一致性的过程。它旨在改...
熟悉JWT的我敲开了大门的门锁,走进了房间 同学:来,你过来~~ 我:干嘛啦 (被推着坐下),哇,同...
考取CISSP是一条艰辛的路,但是没有辛苦过哪来甜蜜的果实, 本身考取cissp提供以下几点的方式提...
学习目标 本文章将会是阅读官方文件Add navigation with routing 内容所做的...
变数与型别 变数是什麽呢? 把他想成是一个容器,容器可以存放需要的资讯,这一个资讯可以是一段文字、一...