5.6.通过Mixin+GenericAPIView实现API

通过Mixin+GenericAPIView实现API

class GoodsCategoryView(ListModelMixin, GenericAPIView):
    """
    获取商品类型列表
    """
    queryset = GoodsCategory.objects.all()[:10]
    serializer_class = GoodsCategorySerializer

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

通过ListAPIView实现API

通过ListAPIView可以省略mixins.ListModelMixin和GenericAPIView的继承,同时省略get、post、patch等函数

class GoodsCategoryView(ListAPIView):
    """
    获取商品类型列表
    """
    queryset = GoodsCategory.objects.all()[:10]
    serializer_class = GoodsCategorySerializer

分页

mo_shop/settings.py

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
    'PAGE_SIZE': 3
}

自定义分页参数

class GoodsCategoryPagination(PageNumberPagination):
    page_size = 2 # page_size值
    page_size_query_param = 'page_size' # page_size字段
    page_query_param = 'page' # page字段
    max_page_size = 10000 # page值


class GoodsCategoryView(ListAPIView):
    """
    获取商品类型列表
    """
    queryset = GoodsCategory.objects.all()
    serializer_class = GoodsCategorySerializer
    pagination_class = GoodsCategoryPagination # 指定使用的分页参数

Last updated

Was this helpful?