1.商品的类类别显示,先看views代码
class CategoryViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
# 注释很有用,在drf文档中
"""
list:
商品分类列表
"""
queryset = GoodsCategory.objects.filter(category_type=1)#获取一级分类数据
serializer_class = CategorySerializer#商品类别的序列化调用
2.serializer的代码,因为有三个级别的分类,而每个分类又包含子分类,所以序列化需要嵌套实例化,可以得到一个树形结构的json数据返回。
class CategorySerializer3(serializers.ModelSerializer):
class Meta:
model = GoodsCategory
fields = "__all__"
class CategorySerializer2(serializers.ModelSerializer):
sub_cat = CategorySerializer3(many=True)
class Meta:
model = GoodsCategory
fields = "__all__"
class CategorySerializer(serializers.ModelSerializer):
sub_cat = CategorySerializer2(many=True)
class Meta:
model = GoodsCategory
fields = "__all__"
3.显示商品详情
修改视图,增加mixins.RetrieveModelMixin这样一个mixins,继承这个类就可以实现商品详情页的显示了。
class CategoryViewset(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
"""
list:
商品分类列表数据
retrieve:
获取商品分类详情
"""
queryset = GoodsCategory.objects.filter(category_type=1)
serializer_class = CategorySerializer
4.配置访问路由
#配置category的url
router.register(r'categorys', CategoryViewset,basename="categorys")