from django.http import JsonResponse
from apps.goods.models import GoodsCategory #2:获取分类ID
from utils.goods import get_breadcrumb
from apps.goods.models import SKU
class ListView(View):
def get(self, request,category_id): #1:接收参数
#1.1排序字段
ordering=request.GET.get('ordering')
#5.1分页中,每页多少数据
page_size=request.GET.get('page_size')
#3根据分类的id进行分类数据查询验证
try:
category=GoodsCategory.objects.get(id=category_id) #get查询容易出现异常
except GoodsCategory.DoesNotExist:
return JsonResponse({'code':400,'errmsg':'参数缺失'})
#4:获取面包屑数据
breadcrumb=get_breadcrumb(category)
#5查询分类对应的sku数据,然后排序,进行分页
#要第几页数据
page=request.GET.get('page')
skus=SKU.objects.filter(category=category,is_launched=True).order_by(ordering)
#5.1分页 object_list 列表数据,per_page 每页多少数据
from django.core.paginator import Paginator
paginator=Paginator(skus, per_page=page_size) # object_list 列表数据,per_page 每页多少数据
#获取指定页码的数据
page_skus=paginator.page(page)
sku_list=[]
#将获取到的对象遍历转化为字典数据
for sku in page_skus.object_list:
sku_list.append({
'id':sku.id,
'name':sku.name,
'price':sku.price,
'default_image_url':sku.default_image.url,
})
#获取总页数
total_num=paginator.num_pages
#6返回响应
return JsonResponse({'code':0,'errmsg':'ok',
'list':sku_list,
'count':total_num,
'breadcrumb':breadcrumb})