• 九.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 # 每页数目 }
    
    
  • 相关阅读:
    浏览器缓存学习
    文件上传
    compass与css sprite(雪碧图)
    记录一下删除过长目录的方法
    JavaScript学习之 倒计时
    HTML/CSS学习之 三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化
    JavaScript学习之setTimeout
    JavaScript实现,控制一个文本框只能输入正整数,如输入不符合条件则文本框全部字体标红
    关于本地文件请求json文件
    CSS3+HTML5特效9
  • 原文地址:https://www.cnblogs.com/lovershowtime/p/11654107.html
Copyright © 2020-2023  润新知