保存规格表数据表数据
添加路由:
# -------规格路由表--------
url(r'goods/simple/$',specs.SpecsView.as_view({'get':'simple'})),
接口分析
请求方式:POST /meiduo_admin/goods/specs/
请求参数: 通过请求头传递jwt token数据。
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
name | str | 是 | 规格名称 |
spu_id | int | 是 | SPU商品id |
返回数据: JSON
{
"id": "规格id",
"name": "规格名称",
"spu": "SPU商品名称",
"spu_id": "SPU商品id"
}
参数 | 类型 | 是否必须 | 说明 |
---|---|---|---|
id | Int | 是 | 规格id |
name | Str | 是 | 规格名称 |
spu | str | 是 | SPU商品名称 |
spu_id | Int | 是 | spu商品id |
后端实现:
# SpecsView继承的是ModelViewSet 所以保存逻辑还是使用同一个类视图
class SpecsView(ModelViewSet):
serializer_class =SPUSpecificationSerializer
queryset = SPUSpecification.objects.all()
pagination_class = PageNum
为了解决上面路由的问题,需要对该类中添加方法:
from rest_framework.viewsets import ModelViewSet
from goods.models import SPUSpecification
from meiduo_admin.serializers.specs import SPUSpecificationSerializer
from meiduo_admin.utils import UserPageNum
from goods.models import SPU
from rest_framework.response import Response
from meiduo_admin.serializers.specs import SPUSerializer
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 goods.models import SPU
from rest_framework import serializers
class SPUSerializer(serializers.ModelSerializer):
"""SPU序列化器"""
class Meta:
model = SPU
fields = ('id', 'name')
再次重新启动服务,再浏览器刷新网页便可获得到了数据: