zoukankan      html  css  js  c++  java
  • 九.Django---framework框架 分页

    一. 分页

    https://www.cnblogs.com/open-yang/p/11573538.html   

    https://blog.csdn.net/qyf__123/article/details/84993125

    https://www.cnblogs.com/MayDayTime/p/9890877.html

      序列化

    class BookModelSerializers(serializers.ModelSerializer):
          class Meta:
              model = Book
              fields = "__all__"





    from
    rest_framework.parsers import JSONParser,FormParser,MultiPartParser,FileUploadParser from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination class MyPageNumberPagination(PageNumberPagination): page_size = 1 page_query_param = 'page' page_size_query_param="size" max_page_size=2 class MyLimitOffsetPagination(LimitOffsetPagination): default_limit=1 class BookView(APIView): # authentication_classes = [TokenAuth,] # [TokenAuth(),] # permission_classes = [] # throttle_classes = [] parser_classes = [JSONParser,FormParser] def get(self,request): print("request.user",request.user) print("request.auth",request.auth) print("_request.body",request._request.body) print("_request.GET",request._request.GET) book_list=Book.objects.all() # 分页 pnp=MyLimitOffsetPagination() books_page=pnp.paginate_queryset(book_list,request,self) bs=BookModelSerializers(books_page,many=True,context={'request': request}) return Response(bs.data) def post(self,request): # post请求的数据 print("request.data",request.data) bs=BookModelSerializers(data=request.data) if bs.is_valid(): print(bs.validated_data) bs.save()# create方法 return Response(bs.data) else: return Response(bs.errors)



    序列化

    class AuthorModelSerializers(serializers.ModelSerializer):

       class Meta:
          model = Author
          fields = "__all__"

    class AuthorModelView(viewsets.ModelViewSet):
        #authentication_classes = [TokenAuth,]
        #permission_classes=[SVIPPermission,]
        #throttle_classes = [VisitRateThrottle]    # 限制某个IP每分钟访问次数不能超过20次
        queryset = Author.objects.all()
        serializer_class = AuthorModelSerializers
        pagination_class = MyPageNumberPagination
        renderer_classes = []
    
    def get_random_str(user): import hashlib,time ctime=str(time.time()) md5=hashlib.md5(bytes(user,encoding="utf8")) md5.update(bytes(ctime,encoding="utf8")) return md5.hexdigest()
    settings
    
    REST_FRAMEWORK = {
    
        # "DEFAULT_AUTHENTICATION_CLASSES": ["app01.utils.TokenAuth",],
        # "DEFAULT_PERMISSION_CLASSES": ["app01.utils.SVIPPermission",],
        # "PAGE_SIZE":1
    }

    二. 分页全局

    也可通过自定义Pagination类,来为视图添加不同分页行为。在视图中通过pagination_class属性来指明。

    class
    LargeResultsSetPagination(PageNumberPagination): page_size = 1000 page_size_query_param = 'page_size' max_page_size = 10000 class BookDetailView(RetrieveAPIView): queryset = BookInfo.objects.all() serializer_class = BookInfoSerializer pagination_class = LargeResultsSetPagination

    REST framework提供了分页的支持。

    我们可以在配置文件中设置全局的分页方式,如:


    REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination', 'PAGE_SIZE': 100 # 每页数目 }
    
    
  • 相关阅读:
    20171012
    BZOJ[2563] 阿狸和桃子的游戏
    BZOJ[1028] [JSOI2007]麻将
    BZOJ[1972] [Sdoi2010]猪国杀
    BZOJ[1033] [ZJOI2008] 杀蚂蚁antbuster
    P5651 基础最短路练习题
    P3047 [USACO12FEB]Nearby Cows G
    P6190 魔法
    P2391 白雪皑皑 / BZOJ 2054 疯狂的馒头
    CSP 2020 J/S 初赛游记
  • 原文地址:https://www.cnblogs.com/lovershowtime/p/11654107.html
Copyright © 2011-2022 走看看