22. 项目实战之 移动端点餐 购物车操作

本节将实现项目移动端的点餐操作模块:即添加、浏览、删除、修改和清空等菜品购物车操作。

实现如上效果,点击每个菜品,购物车添加,展示,最后支付。

 实现步骤: 

创建并编辑购物车视图文件cart.py

配置移动端店铺点餐操作路由信息

编辑移动端首页输出模板文件

========================================================================

(1)创建点餐操作视图文件

  • 在mobile应用中的views目录下创建一个购物车操作视图文件cart.py

  • 编辑此视图文件:mobile/views/cart.py 代码如下:


from django.shortcuts import render
from django.http import HttpResponse
from django.http import JsonResponse

from myadmin.models import Product

# 购物车信息管理
def add(request):
    '''添加购物车'''
    #尝试从session中获取名字为cartlist的购物车信息,若没有返回{}
    cartlist = request.session.get("cartlist",{})
    # 获取要购买的菜品信息
    pid = request.GET.get("pid",None)
    if pid is not None:
        product = Product.objects.get(id=pid).toDict()
        product['num'] = 1 #初始化当前菜品的购买量

        #判断购物车中是否已存在要购买的商品
        if pid in cartlist:
            cartlist[pid]['num'] += product['num'] #累加购买量
        else:
            cartlist[pid] = product
        #将购物车中的商品信息放回到session中
        request.session['cartlist'] = cartlist
    #响应json格式的购物车信息
    return JsonResponse({'cartlist':cartlist})

def delete(request):
    '''删除购物车中的商品'''
    cartlist = request.session['cartlist']
    del cartlist[pid]
    request.session['cartlist'] = cartlist
    #响应json格式的购物车信息
    return JsonResponse({'cartlist':cartlist})

def clear(request):
    '''清空购物车'''
    request.session['cartlist'] = {}
    #响应json格式的购物车信息
    return JsonResponse({'cartlist':{}})

def change(request):
    '''购物车信息修改'''
    cartlist = request.session['cartlist']
    shopid = request.GET.get("pid",0)
    num = int(request.GET.get('num',1))
    if num < 1:
        num = 1
    cartlist[shopid]['num'] = num
    request.session['cartlist'] = cartlist
    #响应json格式的购物车信息
    return JsonResponse({'cartlist':cartlist})

(2). 配置项目中购物车urls路由信息

  • 打开根路由文件:myobject/mobile/urls.py路由文件,编辑路由配置信息:

from django.urls import path

from mobile.views import index
from mobile.views import cart
from mobile.views import member

urlpatterns = [
    path('', index.index, name="mobile_index"), #移动首页

    # 移动端会员注册/登录路由
    path('register', index.register, name="mobile_register"),
    path('doregister', index.doregister, name="mobile_doregister"),

    # 选择商铺
    path('shop', index.shop, name="mobile_shop"),
    path('shop/select', index.selectShop, name="mobile_select_shop"),

    # 购物车信息管理路由配置
    path('cart/add', cart.add, name="mobile_cart_add"),
    path('cart/del', cart.delete, name="mobile_cart_del"),
    path('cart/clear', cart.clear, name="mobile_cart_clear"),
    path('cart/change', cart.change, name="mobile_cart_change"),

    # 处理订单
    path('orders/add', index.addOrders, name="mobile_orders_add"),

    #
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oliver3455

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值