《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
运费:在实际开发的时候,应该属于一个子系统(可以新建一个子系统,比如可以建一张表,买的商品金额介于xx-xx
之间,获取运费)这里未开发,暂时为硬编码
transit_price = 10
实付款为总金额+运费
total_pay = total_price + transit_price
获取用户的收件地址,将用户的收件地址全部查询出来,用户进行选择
addrs = Address.objects.filter(user=user)
组织上下文
context = {
‘addrs’: addrs,
‘total_count’: total_count,
‘total_price’: total_price,
‘transit_price’: transit_price,
‘total_pay’: total_pay,
‘skus’: skus,
}
return render(request, ‘df_order/place_order.html’, context)
前端页面
order/place_order.html
1.地址部分要遍历
2.商品ul部分遍历【数量和小计都有动态添加的属性sku.count和sku.amount,注意,其中序号使用{ { forloop.counter }}】
配置地址
path(‘place’, OrderPlaceView.as_view(), name=‘place’) # 提交订单页面显示
展示的时候,地址只能选中一个,需要在页面中地址部分加name=“addr_id” value=“{ { addr.id }}” {% if addr.is_default %}checked{% endif %}<----表示选中
P87 创建订单前端js
用户提交订单页面的显示,要查询出:
用户地址信息的显示;
用户要购买的商品的信息以及商品数量和小计;
商品的总金额,运费和实付款
当用户提交订单时,需要在后台生成对应的订单,关于订单如何生成,先回顾订单中的两张表:
订单信息表和订单商品表
订单信息表中的trade_no订单编号默认为空
trade_no = models.CharField(max_length=128, default=“”, verbose_name=‘支付编号’)
订单创建:
用户在页面上点击提交订单,在后台要生成订单,给后台需要传递的参数:
收货地址、
支付方式、
商品id,
关于金额不需要传递,后台不会使用传来的参数,自己在后台做计算
收货地址可以获取到,因为选择的时候在后台设置place_order.html的时候,每个地址都有value值,只需要将选中的value值拿出来
支付方式也都有对应的值 value=“1” value=“2”…与models表中定义的一一对应
商品id,页面中没有,用户要购买的商品信息都是后端传过来的,在显示订单提交页面时用户要购买的商品都在sku_ids