更新规格表数据
【ModelViewSet视图集中已经封装好了增删改查的功能,所以这几个功能的代码基本上都是一样的】
1、 获取要修改规格表的详情信息点击修改按钮时,我们需要先获取要修改的规格详情信息
接口分析
请求方式: GET /meiduo_admin/goods/specs/(?P\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是规格 IDnamestr是规格名称spustr是SPU商品名称spu_idint是SPU商品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\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是规格 IDnamestr是规格名称spustr是SPU商品名称spu_idint是SPU商品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')