python创造订单_django订单模块怎么实现

本文详细介绍了使用Django设计订单系统的流程,包括订单提交、创建、参数传递、并发处理及支付过程。在订单提交阶段,通过POST获取选中商品ID,从Redis和MySQL获取商品信息。订单创建时,涉及库存校验、事务处理、并发控制(乐观锁、悲观锁),并使用Ajax提交订单。订单显示时,根据用户订单状态展示不同操作按钮,如支付、评论等。支付完成后,通过调用支付宝接口查询支付状态,更新订单状态。
摘要由CSDN通过智能技术生成

Django设计的订单相关的表如下所示:

由于每一个订单中的商品种类与数量都不定,因此单独将订单商品提出为一个表,为一对多的关系。

订单的提交

从购物车页面提交是通过form形式提交的,在checkbox元素中定义参数value并设为对应的商品id,则传递到后端的为一个由选中商品id组成的列表,在后端中的业务流程为:

①获取参数并校验,表单中的checkbox只有被选中时其value才会被提交,若不选中则不提交,若有多个name相同,则使用POST.getlist获取到一个由多个value(checkbox的value)组成的列表;

②从redis中获取该用户购物车的信息,从mysql中获取商品id对应的信息,计算数量与总价格,并将其动态添加到查询到的sku模型类实例中;

③处理运费与实付款;

④组织参数,渲染订单创建的页面。

订单的提交并不复杂,其中重点在于如何将选中的商品id传入后端,以及传入订单创建页面的参数选择。

订单的创建

订单创建的前端页面

共分为三部分:

①收货地址的选择,此处将默认收货地址默认选中,可以在该用户已有的收货地址中选择,也可以跳转到收货地址的编辑页面;

②支付方式的选择,因为此处只做了支付宝的接口因此其他支付方式暂时无法支付,但是可以提交;

③将要提交的商品按条目显示(在订单提交后端中传入),并显示其数量、单价、小计、单位等信息,显示总价、运费、总数量信息;

注:①在订单创建页面不使用form进行post提交,使用ajax post提交,订单创建成功时跳转到订单页面,创建失败时不跳转,显示后端传递的具体信息;

②由于订单中的信息是从购物车中查询到的,这个信息可能与真实情况不符(如商品下架,库存卖完等),因此在订单创建时必须要进行多次校验之后才可以确定订单是否可以创建成功。

订单创建的参数传递

从购物车提交至订单创建页面再到订单创建后端,其传递选中的商品都是通过传递sku_id然后通过查询redis中的用户购物车信息来进行的(并不直接传递具体的商品信息),但由于订单创建功能不与购物车页面交互,因此将被选中商品的sku_ids重构为一个字符串,直接从购物车传递到订单创建页面,并在订单创建页面中动态添加一个属性为sku_ids(此方法常用于在页面中获取变量)并使用ajax post请求发回后端,在订单创建流程中使用。

订单创建的注意事项

(1)关于订单提交失败:由于可能因为各种原因导致的订单无法完成,但订单

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值