【Django】网上蛋糕商城后台-商品管理

2024-07-19 1429阅读

1.商品管理功能

当管理员点击商品管理时,发送服务器请求

path('admin/goods_list/', viewsAdmin.goods_list),
# 处理商品列表请求
def goods_list(request):
    try:
        type = request.GET["type"]
    except:
        type = 0
    try:
        ym = request.GET["ym"]
    except:
        ym = 1
    if int(type) == 0:
        goodsList = Goods.objects.all().order_by("-id").values()
        for goods in goodsList:
            typeName = Type.objects.get(id=goods["type_id"]).name
            types = Recommend.objects.filter(goods_id=goods["id"]).values_list("type")
            if (1,) in types:
                goods["isScroll"] = True
            if (2,) in types:
                goods["isHot"] = True
            if (3,) in types:
                goods["isNew"] = True
            goods["typeName"] = typeName
    else:
        recommends = Recommend.objects.filter(type=type).order_by("-goods_id")
        goodsList = []
        for r in recommends:
            # 根据推荐栏类型查询商品信息,将查询的对象转换成字典
            goods = Goods.objects.get(id=r.goods_id).__dict__
            # 根据商品id查询该商品添加在哪些推荐栏中
            types = Recommend.objects.filter(goods_id=r.goods_id).values_list("type")
            if (1,) in types:
                goods["isScroll"] = True
            if (2,) in types:
                goods["isHot"] = True
            if (3,) in types:
                goods["isNew"] = True
            # 根据商品中的分类id查询分类名称
            typeName = Type.objects.get(id=goods["type_id"])
            goods["typeName"] = typeName.name
            goodsList.append(goods)
    # 将该分类的商品信息进行分页处理,每页显示6条记录
    pag = paginator.Paginator(goodsList, 6)
    # 根据当前页码获取当前分页信息
    pageInfo = pag.get_page(ym)
    # 获取当前页的商品列表信息
    goodsList = pageInfo.object_list
    # 获取总页码数
    yms = pag.page_range
    return render(request, "adminTemp/goods_list.html",
                  {"goodsList": goodsList, "page": pageInfo, "yms": yms, "type": type})


    商品列表
    {% load static %}
    
    
        
  • 全部商品
  • 条幅推荐
  • 热销推荐
  • 新品推荐

  • {% for g in goodsList %} {% endfor %}
    ID 图片 名称 介绍 价格 类目 操作

    {{ g.id }}

    { g.id }}" target="_blank">【Django】网上蛋糕商城后台-商品管理

    { g.id }}" target="_blank">{{ g.name }}

    {{ g.intro }}

    {{ g.price }}

    {{ g.typeName }}

    {% if g.isScroll %} { g.id }}&method=remove&typeTarget=1">移出条幅 {% endif %} {% if not g.isScroll %} { g.id }}&method=add&typeTarget=1">加入条幅 {% endif %} {% if g.isHot %} { g.id }}&method=remove&typeTarget=2">移出热销 {% endif %} {% if not g.isHot %} { g.id }}&method=add&typeTarget=2">加入热销 {% endif %} {% if g.isNew %} { g.id }}&method=remove&typeTarget=3">移出新品 {% endif %} {% if not g.isNew %} { g.id }}&method=add&typeTarget=3">加入新品 {% endif %}

    { g.id }}&ym={{ page.number }}">修改 { g.id }}&ym={{ page.number }}">删除

    {% if page.has_previous %} { page.previous_page_number }}&type={{ type }}" >上一页 {% endif %} {% for ym in yms %} {% if page.number == ym %} { ym }}&type={{ type }}" >{{ ym }} {% else %} { ym }}&type={{ type }}" >{{ ym }} {% endif %} {% endfor %} {% if page.has_next %} { page.next_page_number }}&type={{ type }}" >下一页 {% endif %}

    【Django】网上蛋糕商城后台-商品管理

    2.加入或移除推荐栏功能

    选择某个商品,点击加入条幅,移除条幅,加入热销,移除热销,加入新品,移除新品按钮时,触发请求事件,传递不同参数信息给服务器

    path('admin/goods_recommend/',viewsAdmin.goods_recommend),
    # 处理商品的推荐栏请求
    def goods_recommend(request):
        id = request.GET["id"]
        method = request.GET["method"]
        typeTarget = request.GET["typeTarget"]
        if "add" == method:
            # 添加至推荐栏
            Recommend.objects.create(goods_id=id, type=typeTarget)
        elif "remove" == method:
            # 从推荐栏中移除
            r = Recommend.objects.get(goods_id=id, type=typeTarget)
            r.delete()
        # 刷新商品管理列表页面
        return redirect(goods_list)

    3.添加商品功能

    当管理员点击添加商品按钮,触发请求事件

    path('admin/goods_add/', viewsAdmin.goods_add),
    # 处理添加商品页面的跳转请求
    def goods_add(request):
        types = Type.objects.all()
        return render(request, "adminTemp/goods_add.html", {"typeList": types})
    
    
        商品添加
        {% load static %}
        
        
            {% csrf_token %}
            
                名称
                
                    
                
            
            
                价格
                
                    
                
            
            
                介绍
                
                    
                
            
            
                库存
                
                    
                
            
            
                封面图片
                
                    推荐尺寸: 500 * 500
                
            
            
                详情图片1
                
                    推荐尺寸: 500 * 500
                
            
            
                详情图片2
                
                    推荐尺寸: 500 * 500
                
            
            
                类目
                
                    
                        {% for t in typeList %}
                            
    VPS购买请点击我

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]