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 # 每页数目 }
    
    
  • 相关阅读:
    HTML<lable for="">标签的for属性。
    Microsoft_Office_Word_遇到问题需要关闭。我们对此引起的不便表示抱歉,问题解决方案
    AnyChart的资料,以后看
    JQquery 鼠标悬浮提示
    如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?
    JQuery UI selectable
    SqlServer 动态添加服务器
    基于CyberGarage库的dlna开发(android)
    自定义实现圆形播放进度条(android,飞一般的感觉)
    Lance老师UI系列教程第一课>QQ设置界面的实现(android)
  • 原文地址:https://www.cnblogs.com/lovershowtime/p/11654107.html
Copyright © 2011-2022 走看看