DRF学习之商品的类别显示(八)

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")

你可能感兴趣的:(DRF)