from rest_framework import viewsets from rest_framework import mixins from django_filters.rest_framework import DjangoFilterBackend from django_filters import rest_framework from rest_framework import filters from rest_framework_extensions.cache.mixins import CacheResponseMixin from apps.goods.models import Goods from apps.goods.serializers import GoodsSerializers from common.mypagination import MyPagination from common.myfilter import MyFilter from common.mymodelviewset import MyModelViewSet from rest_framework import permissions from rest_framework.authentication import TokenAuthentication # from common class GoodsViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.CreateModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet): queryset = Goods.objects.all() serializer_class = GoodsSerializers # 分页 # pagination_class = MyPagination #针对viewset的分页设置,也可以走全局 # 筛选 filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter) # filter_backends = (DjangoFilterBackend,) filterset_class = MyFilter # 搜索 search_fields = ('name', 'price') # 排序 ordering_fields = ('id', 'name', 'price') permission_classes = (permissions.IsAuthenticated,) class GoodsDetailViewSet(viewsets.ReadOnlyModelViewSet): queryset = Goods.objects.all() serializer_class = GoodsSerializers class GoodsViewSetCustom(MyModelViewSet, viewsets.GenericViewSet): queryset = Goods.objects.all() serializer_class = GoodsSerializers pagination_class = MyPagination filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter) filterset_class = MyFilter search_fields = ('name', 'price') ordering_fields = ('id', 'name', 'price')