ModelViewSet 分页 过滤

ModelViewSet 分页 过滤

局部使用

分页

  导包

from django_filters.rest_framework import DjangoFilterBackend

  类调用

class MyPage(PageNumberPagination):
    page_size_query_param = 'max_page'
    page_query_param = 'page'
class UserViewSet(viewsets.ModelViewSet):
  
  queryset = User.objects.all()
  # 分页   pagination_class
= MyPage   serializer_class = UserSerializer #展示序列化器所有信息

过滤

  导包

from rest_framework import filters

  调用

class UserViewSet(viewsets.ModelViewSet):
  
  queryset = User.objects.all()  
  filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)   
  filter_class = GoodsFilters

  serializer_class = UserSerializer #展示序列化器所有信息

全局使用

REST_FRAMEWORK ={
    'DEFAULT_THROTTLE_RATES': {
        'user': '100/hour', # 认证用户每小时10次
        'anon': '1000/day',
    },
    # 过滤全局配置  (ModelViewSet)
    'DEFAULT_FILTER_BACKENDS':(
        'django_filters.rest_framework.DjangoFilterBackend',
        'rest_framework.filters.OrderingFilter'
    ),
    # 分页
    'DEFAULT_PAGINATION_CLASS':
        'rest_framework.pagination.PageNumberPagination',
        'PAGE_SIZE': 2,# 每⻚数⽬
    # 身份认证
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        # 登陆权限
        'rest_framework.authentication.BasicAuthentication',
    ),
    # #全局配置JWT验证设置
    # 'DEFAULT_PERMISSION_CLASSES': (
    #     'rest_framework.permissions.IsAuthenticated',
    # ),
}
原文地址:https://www.cnblogs.com/sq1995liu/p/14153551.html