休むframework-ページ - 長期維持

コンポーネント###############をページング###############

#ページングコンポーネント
#ジャンゴそこにページネーション、残りのフレームワークはまた、ページングが、ページの概念がありません、
#このページは、データが多すぎて、必要がページを返す前に戻され、
#http://127.0.0.1:8000/books/?page=1、
#私たちは、その後、いくつかのメソッドをオーバーライドし、このタブのクラスを継承する必要があります
#クラスMyPageNumberPagination(PageNumberPagination):
#PAGE_SIZE = 2
#page_query_param = "ページ"
#page_size_query_param = "サイズ"
######################################
#http://127.0.0.1:8000/books/?page=1&size=1
#デフォルトの表示2、しかし、あなたがあなた自身のショーがいくつか指定することができ、
##########################################
#http://127.0.0.1:8000/books/?limit=3
#Http://127.0.0.1:8000/books/?limit=3&offset=1、これがオフセットされ、
##############################################
#pagination_class = MyPageNumberPagination
#これは、この1とビューの内側で、我々は、ビュークラスの定義を探します、 
#だから、それは、ページクラスの定義であり、その後、あなたができることを追加フィニッシャー使用

  

###############最初のページャ:PageNumberPagination ###############

ページ番号、ページn、ページごとにm個のデータによるページ

たとえば、次のhttp://127.0.0.1:8000 / API /記事/ページ= 2&サイズ= 1?

ポケットベル:

クラスMyPageNumber(PageNumberPagination):
    PAGE_SIZE = 2   どのように多くのページあたり 
    page_size_query_param = サイズ  #のページ番号のバーショーのURLのパラメータ 
    page_query_param = ページ  #のURLパラメータページで 
    MAX_PAGE_SIZE =なし   #の上限ページ数

見ます:

クラスArticleList(APIView):
     デフを取得(自己、要求、* argsを、** kwargsから):
        RES = { " コード" :0}
        article_list = models.Article.objects.all()。ORDER_BY(" ID " 分页 
        page_obj = MyPageNumber()
        page_article = page_obj.paginate_queryset(=クエリセット= article_list、要求=要求、ビュー自己)
        ser_obj = ArticleSerializer(page_article、多くの= 真)
        RES [ " データ" ] = ser_obj.data
         リターン応答(RES)

応答ページのリンクを返します:

クラスArticleList(APIView):
     デフを取得(自己、要求、* argsを、** kwargsから):
        RES = { " コード" :0}
        article_list = models.Article.objects.all()。ORDER_BY(" ID " 分页 
        page_obj = MyPageNumber()
        page_article = page_obj.paginate_queryset(=クエリセット= article_list、要求=要求、ビュー自己)
        ser_obj = ArticleSerializer(page_article、多くの= 真)
        RES [ " データ" ] = ser_obj.data
         戻り page_obj.get_paginated_response(RES)

 

###############二ページャ:LimitOffsetPagination ###############

位置N、Mデータ背面図でタブ

たとえば、次のhttp://127.0.0.1:8000 / API /記事/オフセット= 2&リミット= 2?

ポケットベル:

オフセットページネーション
クラスMyLimitOffset(LimitOffsetPagination):
    default_limit = 1 
    limit_query_param = ' 限界' 
    offset_query_param = ' オフセット' 
    max_limit = 999

見ます:

クラスArticleList(APIView):
     デフを取得(自己、要求、* argsを、** kwargsから):
        RES = { " コード" :0}
        article_list = models.Article.objects.all()。ORDER_BY(" ID " 分页 
        page_obj = MyLimitOffset()
        page_article = page_obj.paginate_queryset(=クエリセット= article_list、要求=要求、ビュー自己)
        ser_obj = ArticleSerializer(page_article、多くの= 真)
        RES [ " データ" ] = ser_obj.data
         戻り page_obj.get_paginated_response(RES)

 

###############第三ページャ:CursorPagination ###############

[暗号化]タブ、前回と次のid値を覚えておいてください

ポケットベル:

暗号化ページング
クラスMyCursorPagination(CursorPagination):
    cursor_query_param = カーソル
    PAGE_SIZE = 1つの
    順序 = -id   書き換え可能なフィールドをソートします

見ます:

クラスArticleList(APIView):
     デフを取得(自己、要求、* argsを、** kwargsから):
        RES = { " コード" :0}
        article_list = models.Article.objects.all()。ORDER_BY(" ID " 分页 
        page_obj = MyCursorPagination()
        page_article = page_obj.paginate_queryset(=クエリセット= article_list、要求=要求、ビュー自己)
        ser_obj = ArticleSerializer(page_article、多くの= 真)
        RES [ " データ" ] = ser_obj.data
         リターン応答(RES)
        リターン page_obj.get_paginated_response(RES)

 

コンポーネント###############をページング###############

 

おすすめ

転載: www.cnblogs.com/andy0816/p/12293732.html