规格表管理之更新规格表数据

本文介绍了如何在Django REST框架中实现商品规格的增删改查操作。通过ModelViewSet视图集,利用GET请求获取规格详情,PUT请求更新规格数据。详细阐述了相关接口分析、URL路由配置、请求参数和返回数据,并展示了SPUSpecificationSerializer序列化器的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更新规格表数据

【ModelViewSet视图集中已经封装好了增删改查的功能,所以这几个功能的代码基本上都是一样的】

1、 获取要修改规格表的详情信息

点击修改按钮时,我们需要先获取要修改的规格详情信息

接口分析

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

     # -------规格路由表--------
    url(r'goods/simple/$',specs.SpecsView.as_view({'get':'simple'})),
#  规格表路由*****************************
router = DefaultRouter()
router.register('goods/specs',specs.SpecsView, base_name='specs')
print(router.urls)
urlpatterns += router.urls

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

在头部中携带要获取的规格ID

返回数据: JSON

  {
        "id": "规格id",
        "name": "规格名称",
        "spu": "SPU商品名称",
        "spu_id": "SPU商品id"
    }
参数类型是否必须说明
idint规格 ID
namestr规格名称
spustrSPU商品名称
spu_idintSPU商品id

后端实现


# SpecsView继承的是ModelViewSet 所以获取单一规格逻辑还是使用同一个类视图
class SpecsView(ModelViewSet):
    serializer_class =SPUSpecificationSerializer
    queryset = SPUSpecification.objects.all()
    pagination_class = PageNum

为了拿到/meiduo_admin/goods/simple/接口中的数据,还需要添加方法:

class SpecsView(ModelViewSet):
    """商品规格的增删改查"""
    #  指定序列化器
    serializer_class = SPUSpecificationSerializer
    #  指定查询集
    queryset = SPUSpecification.objects.all()
    #  指定分页器
    pagination_class = UserPageNum

    def simple(self, request):
        spus = SPU.objects.all()
        ser = SPUSerializer(spus, many=True)
        return Response(ser.data)

序列化器:

from rest_framework import serializers
from goods.models import SPUSpecification
from goods.models import SPU



class SPUSerializer(serializers.ModelSerializer):
    """SPU序列化器"""
    class Meta:
        model = SPU
        fields = ('id', 'name')

2、修改规格表数据

接口分析

请求方式: PUT /meiduo_admin/goods/specs/(?P<pk>\d+)/

     # -------规格路由表--------
    url(r'goods/simple/$',specs.SpecsView.as_view({'get':'simple'})),
#  规格表路由*****************************
router = DefaultRouter()
router.register('goods/specs',specs.SpecsView, base_name='specs')
print(router.urls)
urlpatterns += router.urls

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

参数类型是否必须说明
namestr规格名称
spu_idint商品SPU ID

返回数据: JSON

  {
        "id": "规格id",
        "name": "规格名称",
        "goods": "SPU商品名称",
        "goods_id": "SPU商品id"
    }
参数类型是否必须说明
idint规格 ID
namestr规格名称
spustrSPU商品名称
spu_idintSPU商品id

后端实现

# SpecsView继承的是ModelViewSet 所以修改逻辑还是使用同一个类视图
class SpecsView(ModelViewSet):
        """
            规格表视图
        """
    serializer_class =SPUSpecificationSerializer
    queryset = SPUSpecification.objects.all()
    pagination_class = PageNum

为了拿到/meiduo_admin/goods/simple/接口中的数据,还需要添加方法:

class SpecsView(ModelViewSet):
    """商品规格的增删改查"""
    #  指定序列化器
    serializer_class = SPUSpecificationSerializer
    #  指定查询集
    queryset = SPUSpecification.objects.all()
    #  指定分页器
    pagination_class = UserPageNum

    def simple(self, request):
        spus = SPU.objects.all()
        ser = SPUSerializer(spus, many=True)
        return Response(ser.data)

序列化器:

from rest_framework import serializers
from goods.models import SPUSpecification
from goods.models import SPU



class SPUSerializer(serializers.ModelSerializer):
    """SPU序列化器"""
    class Meta:
        model = SPU
        fields = ('id', 'name')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值