本文共 4108 字,大约阅读时间需要 13 分钟。
代码
# /list/115/skus/?page=1&page_size=5&ordering=-create_timeclass ListView(View): def get(self, request, category_id): # 获取前端数据 页数 一页几条数据 排序方式 page = request.GET.get('page') page_size = request.GET.get('page_size') ordering = request.GET.get('ordering') # 查询分类对象 try: category = GoodsCategory.objects.get(id=category_id) except Exception as e: print(e) return JsonResponse({ 'code': 400, 'errmsg': '分类查询失败'}) # 获取三级分类的名字 breadcrumb = get_breadcrumb(category) # 查询分类对象下的所有商家的商品数据 try: skus = SKU.objects.filter(category=category, is_launched=True).order_by(ordering) except Exception as e: print(e) return JsonResponse({ 'code': 400, 'errmsg': '查询商品失败'}) # 分页 paginator = Paginator(skus, page_size) page_skus = paginator.page(page) # 组织数据 sku_list = [] for sku in page_skus: sku_list.append({ 'id': sku.id, 'name': sku.name, 'price': sku.price, 'default_image_url': sku.default_image.url, }) # count为总页数 count = paginator.num_pages # 返回数据 return JsonResponse({ 'code': 0, 'errmsg': 'ok', 'breadcrumb': breadcrumb, 'list': sku_list, 'count': count})
get_breadcrumb()方法获取三级分类代码
def get_breadcrumb(category): """ 获取面包屑导航 :param category: 商品类别 :return: 面包屑导航字典 """ breadcrumb = { 'cat1': '', 'cat2': '', 'cat3': '', } if category.parent is None: # 当前类别为一级类别 breadcrumb['cat1'] = category.name elif category.parent.parent is None: # 当前类别为二级 breadcrumb['cat2'] = category.name breadcrumb['cat1'] = category.parent.name else: # 当前类别为三级 breadcrumb['cat3'] = category.name breadcrumb['cat2'] = category.parent.name breadcrumb['cat1'] = category.parent.parent.name return breadcrumb
分类商品页发送销量排行请求,传过来分类id
根据分类id去数据库查询分类对象,再根据对象查询这个分类下的所有上架的商品数据,并以销量倒序排列
组织成前端需要的数据
返回数据
代码
这里商品数据有限,注释的为显示10条销量排行的商品数据
# http://www.meiduo.site:8800/hot/115/class HotGoodsView(View): def get(self, request, category_id): """ 查询销量排行 :param request: :param category_id: 分类id :return: 返回json数据状态和销量排行的商品数据 """ try: # 根据分类id查询分类对象 category = GoodsCategory.objects.get(id=category_id) except Exception as e: print(e) return JsonResponse({ 'code': 400, 'errmsg': '分类查询失败'}) try: # 根据分类对象查询商品数据 按销量排序 倒序 skus = SKU.objects.filter(category=category, is_launched=True).order_by('-sales') except Exception as e: print(e) return JsonResponse({ 'code': 400, 'errmsg': '查询商品失败'}) # count = 1 # hot_sku_list = [] # for sku in skus: # if count == 10: # break # hot_sku_list.append({ # 'id': sku.id, # 'name': sku.name, # 'price': sku.price, # 'default_image_url': sku.default_image.url, # }) # count += 1 try: hot_sku_list = [ { 'id': skus[0].id, 'name': skus[0].name, 'price': skus[0].price, 'default_image_url': skus[0].default_image.url, }, { 'id': skus[1].id, 'name': skus[1].name, 'price': skus[1].price, 'default_image_url': skus[1].default_image.url, } ] except Exception as e: print(e) hot_sku_list = [] return JsonResponse({ 'code': 0, 'errmsg': 'ok', 'hot_skus': hot_sku_list})
转载地址:http://dquhf.baihongyu.com/