<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      django restframework框架七 分頁

      @(python之路)[django restframework框架七 分頁]
      django restframework框架七 分頁

      分頁組件

      a. 根據頁碼進行分頁

      urls.py

      from django.conf.urls import url, include
      from rest_framework import routers
      from app01 import views
      urlpatterns = [
          url(r'^page/', views.UserViewSet.as_view()),
      ]
      

      views.py

      #!/usr/bin/env python
      # -*- coding:utf-8 -*-
      from rest_framework.views import APIView
      from rest_framework import serializers
      from .. import models
      
      from rest_framework.pagination import PageNumberPagination
      
      
      class StandardResultsSetPagination(PageNumberPagination):
          # 默認每頁顯示的數據條數
          page_size = 1
          # 獲取URL參數中設置的每頁顯示數據條數
          page_size_query_param = 'page_size'
      
          # 獲取URL參數中傳入的頁碼key
          page_query_param = 'page'
      
          # 最大支持的每頁顯示的數據條數
          max_page_size = 1
      
      
      class UserSerializer(serializers.ModelSerializer):
          class Meta:
              model = models.UserInfo
              fields = "__all__"
      
      
      class UserViewSet(APIView):
          def get(self, request, *args, **kwargs):
              user_list = models.UserInfo.objects.all().order_by('-id')
      
              # 實例化分頁對象,獲取數據庫中的分頁數據
              paginator = StandardResultsSetPagination()
              page_user_list = paginator.paginate_queryset(user_list, self.request, view=self)
      
              # 序列化對象
              serializer = UserSerializer(page_user_list, many=True)
      
              # 生成分頁和數據
              response = paginator.get_paginated_response(serializer.data)
              return response
      
      
      

      b. 位置和個數進行分頁

      urls.py

      from django.conf.urls import url, include
      from web.views import s9_pagination
      urlpatterns = [
          url(r'^test/', s9_pagination.UserViewSet.as_view()),
      ]
      

      views.py

      #!/usr/bin/env python
      # -*- coding:utf-8 -*-
      from rest_framework.views import APIView
      from rest_framework import serializers
      from .. import models
      
      from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination
      
      
      class StandardResultsSetPagination(LimitOffsetPagination):
          # 默認每頁顯示的數據條數
          default_limit = 10
          # URL中傳入的顯示數據條數的參數
          limit_query_param = 'limit'
          # URL中傳入的數據位置的參數
          offset_query_param = 'offset'
          # 最大每頁顯得條數
          max_limit = None
      
      class UserSerializer(serializers.ModelSerializer):
          class Meta:
              model = models.UserInfo
              fields = "__all__"
      
      
      class UserViewSet(APIView):
          def get(self, request, *args, **kwargs):
              user_list = models.UserInfo.objects.all().order_by('-id')
      
              # 實例化分頁對象,獲取數據庫中的分頁數據
              paginator = StandardResultsSetPagination()
              page_user_list = paginator.paginate_queryset(user_list, self.request, view=self)
      
              # 序列化對象
              serializer = UserSerializer(page_user_list, many=True)
      
              # 生成分頁和數據
              response = paginator.get_paginated_response(serializer.data)
              return response
      
      

      c. 游標分頁

      urls.py

      from django.conf.urls import url, include
      from web.views import s9_pagination
      
      urlpatterns = [
          url(r'^test/', s9_pagination.UserViewSet.as_view()),
      ]
      

      views.py

      #!/usr/bin/env python
      # -*- coding:utf-8 -*-
      from rest_framework.views import APIView
      from rest_framework import serializers
      from .. import models
      
      from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination
      
      
      class StandardResultsSetPagination(CursorPagination):
          # URL傳入的游標參數
          cursor_query_param = 'cursor'
          # 默認每頁顯示的數據條數
          page_size = 2
          # URL傳入的每頁顯示條數的參數
          page_size_query_param = 'page_size'
          # 每頁顯示數據最大條數
          max_page_size = 1000
      
          # 根據ID從大到小排列
          ordering = "id"
      
      
      
      class UserSerializer(serializers.ModelSerializer):
          class Meta:
              model = models.UserInfo
              fields = "__all__"
      
      
      class UserViewSet(APIView):
          def get(self, request, *args, **kwargs):
              user_list = models.UserInfo.objects.all().order_by('-id')
      
              # 實例化分頁對象,獲取數據庫中的分頁數據
              paginator = StandardResultsSetPagination()
              page_user_list = paginator.paginate_queryset(user_list, self.request, view=self)
      
              # 序列化對象
              serializer = UserSerializer(page_user_list, many=True)
      
              # 生成分頁和數據
              response = paginator.get_paginated_response(serializer.data)
              return response
      

      源碼分析

      ?這里的源碼比較簡單,我們不在解說。
      ?我們要更加關注與思維方式,可以說rest framework的源碼寫的非常漂亮。我們要關注的點有,繼承、反射、默認配置文件定義、類的封裝和列表生成式等。
      ?還需要注意一點分析入口self.dispath入口。

      posted @ 2018-06-06 10:38  zz小公子  閱讀(138)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 性色av无码久久一区二区三区| jizzjizz日本高潮喷水| 精品久久久久久无码不卡 | 成人国产精品中文字幕| 日韩有码中文字幕第一页| 亚洲欧美成人综合久久久| 无遮无挡爽爽免费视频| 九九日本黄色精品视频| 人妻互换一二三区激情视频 | 蜜臀精品国产高清在线观看| 久久99精品久久久久久| 日本a在线播放| a级国产乱理伦片在线观看al| 微拍福利一区二区三区| 桂平市| 国产女高清在线看免费观看| 日韩精品中文女同在线播放| 午夜精品福利亚洲国产| 日韩中文字幕亚洲精品| 尤物yw193无码点击进入| 欧美成人精品三级在线观看| 国产精品剧情亚洲二区| 国产精品免费重口又黄又粗| 亚洲色欲色欲天天天www| 宜阳县| 国产桃色在线成免费视频| 亚洲国产日韩一区三区| 五月花成人网| 久久天天躁狠狠躁夜夜2020老熟妇| 狠狠v日韩v欧美v| 久久精品国产蜜臀av| 亚洲一区二区三区丝袜| 国产成人不卡一区二区| 大尺度国产一区二区视频| www国产亚洲精品久久网站| 精品国产中文字幕在线| 亚洲av成人一区二区| 国产一区二区不卡在线看| 国产中文字幕精品视频| 欧美成人h精品网站| 东京热一精品无码av|