コンポーネント###############をページング###############
#ページングコンポーネント # #ジャンゴそこにページネーション、残りのフレームワークはまた、ページングが、ページの概念がありません、 #このページは、データが多すぎて、必要がページを返す前に戻され、 #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)
コンポーネント###############をページング###############