微信:商品分类

一 商品分类

 

1.接口Category.py

from rest_framework.views import APIView
from rest_framework.response import  Response
from  app01 import models
from app01.my_ser import Category_ser
from app01.comment import func
class All(APIView):
    def post(self,request):
        data=models.Category.objects.filter(is_show=True)
        data=Category_ser.Category_ser(instance=data,many=True,context={"request":request}).data
        data=func.get_son(data)
        return Response({
            "code":200,
            "msg":"ok",
            "data":data
        })

2.序列化Category_ser
from  rest_framework import serializers
from app01 import  models
class Category_ser(serializers.ModelSerializer):
    image_url=serializers.ImageField(source="image.image_url")
    parent_id=serializers.SerializerMethodField()
    def get_parent_id(self,obj):
        if obj.parent_id is None:
            return 0
        else:
            return  obj.parent_id

    class Meta:
        model=models.Category
        fields="__all__"

3.func.py

res=[]
def  get_son(data,level=0,parent_id=0,is_clear=True):
    if is_clear:
        res.clear()
    for item in data:
        if item['parent_id']==parent_id:
            item['level']=level
            res.append(item)
            get_son(data,level=level+1,parent_id=item['cat_id'],is_clear=False)
    return res
"""
son=get_son(data)
print(son)
[{'cat_id': 1, 'name': '北京', 'parent_id': 0, 'level': 0}, {'cat_id': 3, 'name': '沙河', 'parent_id': 1, 'level': 1}, {'cat_id': 4, 'name': 'sb镇', 'parent_id': 3, 'level': 2}, {'cat_id': 5, 'name': '昌平', 'parent_id': 1, 'level': 1}, {'cat_id': 2, 'name': '上海', 'parent_id': 0, 'level': 0}, {'cat_id': 6, 'name': '青浦', 'parent_id': 2, 'level': 1}]
"""
商品分类

二 商品列表,详情,热销

from rest_framework.views import APIView
from rest_framework.response import  Response
from app01.my_ser import Goods_ser
from  app01 import models
from app01.my_ser import Category_ser,Goods_ser
from app01.comment import func
#热销商品
class HotGoods(APIView):
    def post(self,request):
        data=models.Product.objects.filter(disabled=True).order_by("-buy_count","-w_order")
        data=Goods_ser.Goods_ser(instance=data,many=True,context={"request":request}).data
        return  Response({"code":200,"msg":"ok","data":data})
#商品列表
class List(APIView):
    def post(self,request):
        param=request.data
        #category_id为某个分类的id
        if param.get('category_id'):
            data=models.Category.objects.filter(is_show=True)
            data=Category_ser.Category_ser(instance=data,many=True,context={"request":request}).data
            #从date列表中找出所有category_id的子分类孙分类包括自身
            all_id=func.get_son_id(data,param['category_id'])
            #把自身和孙分类查出序列化
            data=models.Product.objects.filter(disabled=True,cat_id__in=all_id).order_by("-w_order")
            data = Goods_ser.Goods_ser(instance=data, many=True, context={"request": request}).data
            return Response({"code": 200, "msg": "ok", "data": data})
        else:
            return Response({"code": 201, "msg":"缺少参数" })

#商品详情,前端传回摸个具体商品的主键
class Detail(APIView):
    def post(self,request):
        param=request.data
        if param.get("id"):
            data = models.Product.objects.filter(disabled=True,product_id=param.get("id")).first()
            if data:
                data = Goods_ser.Goods_ser(instance=data, many=False, context={"request": request}).data
                print(data)
                return Response({"code": 200, "msg": "ok", "data": data})
            else:
                return Response({"code": 201, "msg": "没有该商品"})
商品

序列化

from  rest_framework import serializers
from app01 import  models
class Goods_ser(serializers.ModelSerializer):
    image_url=serializers.ImageField(source="image.image_url")
    stock=serializers.IntegerField(source="stock.quantity")
    class Meta:
        model=models.Product
        fields="__all__"
序列化

猜你喜欢

转载自www.cnblogs.com/tfzz/p/12595721.html