阿语Python项目实操之美多后台管理-商品管理之SPU表管理第5.2.2节保存SPU表数据...

news/2024/5/18 16:39:44 标签: java, cookie, filter, django, html
htmledit_views">

保存SPU表数据

在保存数据之前我们需要先获取品牌名称和分类信息

1、获取品牌信息

接口分析

请求方式:GET /meiduo_admin/goods/brands/simple

请求参数:通过请求头传递jwt token数据。

返回数据:JSON

 [
        {
            "id": 1,
            "name": "Apple"
        },
        {
            "id": 2,
            "name": "华为(HUAWEI)"
        }
    ]
返回值类型是否必须说明
Idint商品品牌id
name数组商品品牌名称

后端实现

class SPUSView(ModelViewSet):
    """
        spu表的增删改查
    """
    serializer_class = SPUSerializer
    queryset = SPU.objects.all()
    pagination_class = PageNum

    # 在类中跟定义获取品牌数据的方法
    def brand(self, request):
        # 1、查询所有品牌数据
        data = Brand.objects.all()
        # 2、序列化返回品牌数据
        ser = SPUBrandsSerizliser(data, many=True)

        return Response(ser.data)

序列化器的定义

class SPUBrandsSerizliser(serializers.ModelSerializer):
    """
        SPU表品牌序列化器
    """
    class Meta:
        model = Brand
        fields = "__all__"

2、获取一级分类信息

接口分析

请求方式:GET meiduo_admin/goods/channel/categories/

请求参数:通过请求头传递jwt token数据。

返回数据:JSON

 [
        {
            "id": "一级分类id",
            "name": "一级分类名称"
        },
        ...
    ]
返回值类型是否必须说明
Idint一级分类ID
name数组一级分类名称

后端实现

class SPUSView(ModelViewSet):
    """
        spu表的增删改查
    """
    serializer_class = SPUSerializer
    queryset = SPU.objects.all()
    pagination_class = PageNum

    def brand(self, request):
        # 1、查询所有品牌数据
        data = Brand.objects.all()
        # 2、序列化返回品牌数据
        ser = BrandSerializer(data, many=True)

        return Response(ser.data)


    def channel(self,request):
        # 1、获取一级分类数据
        data = GoodsCategory.objects.html" title=filter>filter(parent=None)
        # 2、序列化返回分类数据
        ser=CategorysSerizliser(data,many=True)
        return Response(ser.data)

定义序列化器

class CategorysSerizliser(serializers.ModelSerializer):
    """
        SPU表分类信息获取序列化器
    """
    class Meta:
        model=GoodsCategory
        fields="__all__"

3、获取二级和三级分类

接口分析

请求方式:GET /meiduo_admin/goods/channel/categories/(?P<pk>\d+)/

请求参数:通过请求头传递jwt token数据。

在路径中传递当前分类商品id

返回数据:JSON

 [
        {
            "id": "当前分类id",
            "name": "当前分类名称"
        },
        ...
    ]
返回值类型是否必须说明
Idint分类id
nameStr分类名称

后端实现

class SPUSView(ModelViewSet):
    """
        spu表的增删改查
    """
    serializer_class = SPUSerializer
    queryset = SPU.objects.all()
    pagination_class = PageNum

    def brand(self, request):
        # 1、查询所有品牌数据
        data = Brand.objects.all()
        # 2、序列化返回品牌数据
        ser = BrandSerializer(data, many=True)

        return Response(ser.data)


    def channel(self,request):
        # 1、获取一级分类数据
        data = GoodsCategory.objects.html" title=filter>filter(parent=None)
        # 2、序列化返回分类数据
        ser=CategorysSerizliser(data,many=True)
        return Response(ser.data)

    def channels(self,request,pk):
        # 1、获取二级和三级分类数据
        data = GoodsCategory.objects.html" title=filter>filter(parent_id=pk)
        # 2、序列化返回分类数据
        ser=CategorysSerizliser(data,many=True)
        return Response(ser.data)

4、上传图片

接口分析

请求方式:POST goods/images

请求参数:通过请求头传递jwt token数据。

同时携带图片文件数据发送后段

返回数据:JSON

{
   {
      'img_url': settings.FDFS_URL+image_url 
    }
}
参数类型是否必须说明
Img_url字符串完整的图片保存地址

后端实现:

class SPUSView(ModelViewSet):
    """
        spu表的增删改查
    """
    serializer_class = SPUSerializer
    queryset = SPU.objects.all()
    pagination_class = PageNum


    def image(self,request):
        """
            保存图片
        :param request:
        :return:
        """
        # 1、获取图片数据
        data = request.FILES.get('image')
        # 验证图片数据
        if data is None:
            return Response(status=500)

        # 2、建立fastDFS连接对象
        client = Fdfs_client(settings.FASTDFS_PATH)

        # 3、上传图片
        res = client.upload_by_buffer(data.read())

        # 4、判断上传状态
        if res['Status'] != 'Upload successed.':
            return Response({'error': '上传失败'}, status=501)

        # 5、获取上传的图片路径
        image_url = res['Remote file_id']

        # 6、结果返回
        return Response(
            {
                'img_url': settings.FDFS_URL+image_url
            },

            status=201
        )

5、保存SPU数据

接口分析

请求方式:POST meiduo_admin/goods/

请求参数:通过请求头传递jwt token数据。

参数类型是否必须说明
namestrSPU名称
brand_idint商品SPU ID
category1_idstr商品副标题
category2_idint三级分类ID
category3_idint价格
desc_detailstr进价
desc_packstr市场价
desc_servicestr库存

返回数据:JSON

 {
        "id": "商品SPU ID",
        "name": "SPU名称",
        "brand": "品牌名称",
        "brand_id": "品牌id",
        "category1_id": "一级分类id",
        "category2_id": "二级分类id",
        "category3_id": "三级分类id",
        "sales": "SPU商品销量",
        "comments": "SPU商品评论量",
        "desc_detail": "商品详情",
        "desc_pack": "商品包装",
        "desc_service": "售后服务"
   }
参数类型是否必须说明
idInt商品SPU ID
nameStr商品SPU 名称
brandstr品牌名称
brand_idint品牌id
category1_idint一级分类id
category2_idint二级分类id
category3_idint三级分类id
salesintSPU商品销量
commentsintSPU商品评论量
desc_detailstr商品详情
desc_packstr商品包装
desc_servicestr售后服务

后端实现

# SPUGoodsView继承的是ModelViewSet 所以保存逻辑还是使用同一个类视图
class SPUGoodsView(ModelViewSet):
    """
        SPU表
    """
    serializer_class = SPUGoodsSerialzier
    queryset = SPU.objects.all()
    pagination_class = PageNum

http://www.niftyadmin.cn/n/739691.html

相关文章

阿语Python项目实操之美多后台管理-商品管理之规格表管理第5.3.1节查询获取规格表列表数据...

查询获取规格表列表数据接口分析请求方式&#xff1a;GET /meiduo_admin/goods/specs/请求参数&#xff1a;通过请求头传递jwt token数据。返回数据&#xff1a;JSON{"counts": "SPU商品规格总数量","lists": [{"id": "规格id&qu…

阿语Python项目实操之美多后台管理-商品管理之sku表管理第5.1.4节删除SKU表数据...

删除SKU表数据接口分析请求方式&#xff1a;Delte meiduo_admin/skus/(?P<pk>\d)/请求参数&#xff1a;通过请求头传递jwt token数据。在路径中携带删除的spu的id值返回数据&#xff1a;JSON返回空后端实现# SKUGoodsView继承的是ModelViewSet 所以删除逻辑还是使用同一…

阿语Python项目实操之美多后台管理-商品管理之规格表管理第5.3.1节更新规格表数据...

更新规格表数据1、 获取要修改规格表的详情信息点就修改按钮时&#xff0c;我们需要先获取要修改的规格详情信息接口分析请求方式&#xff1a;GET /meiduo_admin/goods/specs/(?P<pk>\d)/请求参数&#xff1a;通过请求头传递jwt token数据。在头部中携带要获取的规格ID返…

阿语Python项目实操之美多后台管理-商品管理之规格表管理第5.3.2节保存规格表数据表数据...

保存规格表数据表数据接口分析请求方式&#xff1a;POST /meiduo_admin/goods/specs/请求参数&#xff1a;通过请求头传递jwt token数据。参数类型是否必须说明namestr是规格名称spu_idint是SPU商品id返回数据&#xff1a;JSON{"id": "规格id","name&…

阿语Python项目实操之美多后台管理-商品管理之SPU表管理第5.2.4节删除SPU表数据...

删除SPU表数据接口分析请求方式&#xff1a;Delte meiduo_admin/goods/(?P<pk>\d)/请求参数&#xff1a;通过请求头传递jwt token数据。在路径中携带删除的sku的id值返回数据&#xff1a;JSON返回空后端实现# SPUGoodsView继承的是ModelViewSet 所以删除逻辑还是使用同一…

阿语Python项目实操之美多后台管理-商品管理之SPU表管理第5.2.3节更新SPU表数据...

更新SPU表数据1、 获取修改商品的详情信息点就修改按钮时&#xff0c;我们需要先获取要修改的商品详情信息接口分析请求方式&#xff1a;GET /meiduo_admin/goods/(?P<pk>\d)/请求参数&#xff1a;通过请求头传递jwt token数据。在头部中携带要获取的sku商品ID返回数据&…

阿语Python项目实操之美多后台管理-商品管理之SPU表管理第5.2.1节查询获取SPU表列表数据...

查询获取SPU表列表数据在获取sku数据时&#xff0c;我们在请求中包含了查询关键keyword&#xff0c;这时我么就需要对keyword进行判断&#xff0c;来返回不同的查询数据接口分析请求方式&#xff1a;GET /meiduo_admin/goods/?keyword<名称|副标题>&page<页码>…

CNN卷积类型总结(标准卷积、空洞卷积、反卷积、深度可分离卷积、分组卷积等)

目录 标准卷积 卷积的运算 conv2d conv1d 其他卷积类型 空洞卷积&#xff08;膨胀卷积&#xff09; 反卷积&#xff08;转置卷积&#xff09; 深度可分离卷积 分组卷积 参考文章 上学时&#xff0c;卷积常在各个课程中出现&#xff0c;现代、信号与系统这些&#xff…