这篇文章给大家聊聊关于个人网站下单源码分享,以及自助下单网站源码对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
博客目录:
……
十、基于Django+mysql的点餐系统设计-第十篇(H5手机移动端点餐:登录)
十一、基于Django+mysql的点餐系统设计-第十一篇(H5手机移动端点餐:购物车操作)
十二、基于Django+mysql点餐系统设计-第十二篇(移动端:会员下单处理)
本章源码下载地址:https://github.com/hopeSuceess/testorder/tree/testorder_20220622_01
上一篇讲了购物车操作,紧接着上一篇继续讲新增购物车后,这些餐品的下单操作。首先在Model层定义数据库表,在myadmin/models.py中编写如下代码:
店铺id号\nmember_id=models.IntegerField()操作员id\nmoney=models.FloatField()订单状态:1进行中/2无效/3已完成\npayment_status=models.IntegerField(default=1)创建时间\nupdate_at=models.DateTimeField(default=datetime.now)34;orders&更改表名\n\n订单id\n菜品id\nproduct=models.ForeignKey(&39;,on_delete=models.CASCADE)菜品名称\nprice=models.FloatField()数量\nstatus=models.IntegerField(default=1)34;order_detail&更改表名\n\n订单id号\nmember_id=models.IntegerField()支付金额\ntype=models.IntegerField()收款银行渠道:1微信/2余额/3现金/4支付宝\nstatus=models.IntegerField(default=1)创建时间\nupdate_at=models.DateTimeField(default=datetime.now)34;payment&更改表名
定义完了数据库表,开始编写路由控制器的逻辑,在mobile/urls.py中先定义加载移动端订单页的路由逻辑
39;orders/add&34;mobile_addorders&加载移动端订单页
定义完了路由逻辑,现在开始写view层的实现逻辑,在mobile/views/cart.py中编写addOrders函数
defaddOrders(request):\n&34;&34;&34;\n39;cartlist&初始化一个总金额\n39;num&39;price&39;total_money&34;mobile/addOrders.html&39;mobile/base.html&34;header&34;javascript:window.history.back();&34;return&34;main-containeradd-product&34;list-contentcartlistorder-Pro&34;line&34;34;><divclass=&34;><imgsrc=&39;uploads/product/&34;alt=&34;></div></a>
<divclass=&34;><h3>{{vo.name}}</h3><b>¥{{vo.price}}</b>×{{vo.num}}</div>
</li>
{%endfor%}
</ul>
</div>
<!–支付方式–>
<divclass=&34;id=&34;>
<p>支付方式</p>
<olclass=&34;>
</ol>
<divclass=&34;>
<ulclass=&34;>
<liclass=&34;bank=&34;><iclass=&34;></i>支付宝支付<emclass=&34;></em></li>
<libank=&34;><iclass=&34;></i>微信支付<emclass=&34;></em></li>
</ul>
</div>
</div>
<br><br>
</article>
<!—底部栏目–>
<footer>
<divclass=&34;><buttononclick=&34;>提交订单</button></div>
<h4>实付款:¥{{request.session.total_money}}</h4>
</footer>
{%endblock%}
{%blockmyjavascript%}
<script>
//支付方式上的单选按钮点击效果
$(&34;).click(function(){
$(&34;).removeClass(&34;);
$(this).addClass(&34;);
});
//执行订单提交操作函数
functiondoSubmit(){
{34;ul.lineli.select&34;bank&}
{34;{%url&39;%}?bank=&}
window.location.href=&39;mobile_doaddorders&34;;
}
</script>
{%endblock%}
好了,现在启动工程调试一下,访问http://127.0.0.1:8000/mobile/,选择菜品后,点击&34;,跳到了&34;页
继续往下写,在提交订单页提交订单,这里涉及了多个数据库表的插入:订单信息表、支付表、订单详情表,这三表里的信息在后续的查询中都会用到。
在mobile/views/index.py中实现doAddOrders函数
defdoAddOrders(request):\n&39;&39;&39;\ntry:\n39;shopinfo&39;id&39;mobileuser&39;id&39;total_money&订单状态:1进行中/2无效/3已完成\nod.payment_status=234;%Y-%m-%d%H:%M:%S&34;%Y-%m-%d%H:%M:%S&执行支付信息添加\nop=Payment()\nop.order_id=od.id39;mobileuser&39;id&1会员付款/2收银收款\nop.bank=request.GET.get(&34;,3)39;total_money&支付状态:1未支付/2已支付/3已退款\nop.create_at=datetime.now().strftime(&34;)\nop.update_at=datetime.now().strftime(&34;)\nop.save()\n\n34;cartlist&获取购物车中的菜品信息\n订单id\nov.product_id=item[&39;]39;name&菜品名称\nov.price=item[&39;]39;num&数量\nov.status=139;cartlist&39;total_money&34;mobile/orderinfo.html&34;order&!-*-coding:UTF-8-*-
@Author:中国
@Software:PyCharm
fromdatetimeimportdatetime
fromdjango.httpimportHttpResponse
fromdjango.shortcutsimportredirect,render
fromdjango.urlsimportreverse
frommyadmin.modelsimportCategory,Product,Shop,Member,Payment,OrderDetail,Orders
defindex(request):
接收到前端的处理逻辑,返回”欢迎来到大堂点餐!“
39;欢迎来到手机移动端点餐页面!&39;&39;移动端首页&39;&获取并判断当前店铺信息
shopinfo=request.session.get(&34;,None)
ifshopinfoisNone:
returnredirect(reverse(&34;))获取当前店铺下的菜品类别和菜品信息
clist=Category.objects.filter(shop_id=shopinfo[&39;],status=1)
productlist=dict()
forvoinclist:
plist=Product.objects.filter(category_id=vo.id,status=1)
productlist[vo.id]=plist
context={&39;:clist,&39;:productlist.items(),&39;:clist[0]}
returnrender(request,&34;,context)
defshop(request):
&39;&39;&39;
context={&39;:Shop.objects.filter(status=1)}
returnrender(request,&39;,context)
defselectShop(request):
&39;&39;&39;
39;sid&将店铺信息放入到seession中
request.session[&39;]=ob.toDict()
returnredirect(reverse(&39;))
defregister(request):
&39;&39;&39;
returnrender(request,&34;)
defdoRegister(request):
&39;&39;&39;
34;1234&request.session[&39;]
code=request.POST[&39;]
ifverifycode!=code:
context={&39;:&39;}
returnrender(request,&34;,context)
try:
39;mobile&此处可以执行当前会员注册(添加)
ob=Member()
ob.nickname=&34;34;moren.png&默认头像
ob.mobile=request.POST[&39;]34;%Y-%m-%d%H:%M:%S&34;%Y-%m-%d%H:%M:%S&检查当前会员状态
ifmember.status==1:
39;mobileuser&重定向到首页
returnredirect(reverse(&34;))
else:
context={&34;:&39;}
returnrender(request,&34;,context)
defaddOrders(request):
&39;&39;&39;
39;cartlist&初始化一个总金额
39;num&39;price&39;total_money&放进session
returnrender(request,&34;)
defdoAddOrders(request):
&39;&39;&39;
try:
39;shopinfo&39;id&39;mobileuser&39;id&39;total_money&订单状态:1进行中/2无效/3已完成
od.payment_status=234;%Y-%m-%d%H:%M:%S&34;%Y-%m-%d%H:%M:%S&执行支付信息添加
op=Payment()
op.order_id=od.id39;mobileuser&39;id&1会员付款/2收银收款
op.bank=request.GET.get(&34;,3)39;total_money&支付状态:1未支付/2已支付/3已退款
op.create_at=datetime.now().strftime(&34;)
op.update_at=datetime.now().strftime(&34;)
op.save()
34;cartlist&获取购物车中的菜品信息
订单id
ov.product_id=item[&39;]39;name&菜品名称
ov.price=item[&39;]39;num&数量
ov.status=139;cartlist&39;total_money&34;mobile/orderinfo.html&34;order&头条创作挑战赛#
如果你还想了解更多这方面的信息,记得收藏关注本站。