老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

rest_framework中的分頁功能

為什么要使用分頁

我們數據表中可能會有成千上萬條數據,當我們訪問某張表的所有數據時,我們不太可能需要一次把所有的數據都展示出來,因為數據量很大,對服務端的內存壓力比較大還有就是網絡傳輸過程中耗時也會比較大。

創新互聯是一家專業提供宜陽企業網站建設,專注與成都網站設計、做網站、H5技術、小程序制作等業務。10年已為宜陽眾多企業、政府機構等服務。創新互聯專業網站制作公司優惠進行中。

通常我們會希望一部分一部分去請求數據,也就是我們常說的一頁一頁獲取數據并展示出來。

分頁的三種方式

方式一:基本的分頁,就是正常的查第幾頁每頁顯示多少條

model.py

from django.db import models

# Create your models here.
from django.db import models


class Book(models.Model):
    name = models.CharField(max_length=32)
    price = models.CharField(max_length=32)
    publish = models.CharField(max_length=32)

    def __str__(self):
        return self.name

serializer.py

from rest_framework import serializers
from .models import Book, Publish


class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = '__all__'

page.py

from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination


class CommonPageNumberPagination(PageNumberPagination):
    # 有4個類屬性
    # 每頁顯示條數
    page_size = 2
    # 分頁查詢的那個參數 ?page=10
    page_query_param = 'page'
    # ?page=3&size=3 查詢3頁,每頁查詢3條
    page_size_query_param = 'size'
    # 可以通過size控制每頁顯示的條數,但是通過這個參數控制最多顯示多少條
    max_page_size = 3

view.py

from django.shortcuts import render

# Create your views here.
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import ListModelMixin
from rest_framework.viewsets import ViewSetMixin

from app01.models import Book
from app01.serializer import BookSerializer

from rest_framework.pagination import PageNumberPagination, LimitOffsetPagination, CursorPagination
# as 后面是起的別名,將我們寫的類導入進來
from .page import CommonPageNumberPagination as PageNumberPagination
class BookView(ViewSetMixin, GenericAPIView, ListModelMixin):
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    # pagination_class后面是我們自己寫的類,只不過在導入的時候我們重新命名了
    pagination_class = PageNumberPagination

方式二:偏移分頁:可以直接從第幾頁第幾個位置開始拿數據 offset=6&limit=2

page.py

class CommonLimitOffsetPagination(LimitOffsetPagination):
    # 每頁顯示多少條
    default_limit = 2
    # 可以直接從第幾頁第幾個位置開始拿數據 offset=6&limit=2
    limit_query_param = 'limit'  # 取多少條
    # 從第0個位置偏移多少開始取數據
    offset_query_param = 'offset'
    # 最大限制條數
    max_limit = 5

view.py

from .page import CommonLimitOffsetPagination
class BookView(ViewSetMixin, GenericAPIView, ListModelMixin):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

    pagination_class = CommonLimitOffsetPagination

方式三:游標分頁式分頁

效率高,但是可控性差,只能選擇上一頁與下一頁,不能直接跳轉到某一頁,這種針對于大數據
page.py

class CommonCursorPagination(CursorPagination):
    # 查詢的名字
    cursor_query_param = 'cursor'
    # 每頁顯示多少條
    page_size = 3
    # 必須是表中有的字段,一般用id
    ordering = 'id'

view.py

from .page import CommonCursorPagination
class BookView(ViewSetMixin, GenericAPIView, ListModelMixin):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

    pagination_class = CommonCursorPagination

如果使用APIView或者GenericAPIView分頁

# 如果使用APIView分頁
class BookView(APIView):
    def get(self,request,*args,**kwargs):
        book_list=models.Book.objects.all()
        # 1.實例化得到一個分頁器對象,MyPageNumberPagination這個是我們自己寫好的分頁器類
        page_cursor=MyPageNumberPagination()
        # 2.使用分頁器對象的paginate_queryset方法,該方法內傳入queryset、request和當前視圖類參數,注意返回值其實是一個新的queryset,替代了book_list
        book_list=page_cursor.paginate_queryset(book_list,request,view=self)
        # 3.分頁器對象的get_next_link和get_previous_link是取到下一頁和上一頁的url,然后可以返回給前端(就是將next_url放在下面的Response里返回,前端頁面就可以顯示出來上下頁的url了
        next_url =page_cursor.get_next_link()
        pr_url=page_cursor.get_previous_link()
        # print(next_url)
        # print(pr_url)
        book_ser=BookModelSerializer(book_list,many=True)
        return Response(data=book_ser.data)

分享題目:rest_framework中的分頁功能
文章URL:http://www.xueling.net.cn/article/dsogcoh.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 欧美男同GV免费网站观看 | 中文字幕在线中文字幕在线中三区 | 狠狠夜夜 | 午夜精品久久久久久久久久 | 国产精品乱码一区二区三区视频 | 日本aⅴ中文 | 成人午夜性A级毛片免费 | 色综合久久久久久久久久久 | 特级毛片全部免费播放 | 97av影院| 深夜福利小视频 | 久久高清超碰AV热热久久 | 超级碰人人干 | 国产精品高清乱码在线观看 | 夜夜爽www一区二区三区精品 | 午夜视频在线观看免费视频 | 美女裸体黄网站18禁免费看 | 高潮真紧好爽我视频 | 国产精品网站在线免费观看 | 日韩日韩日韩日韩日韩 | 精品精品国产三级a∨在线 麻豆传媒免费视频 | 亚洲欧美另类国产 | 呻吟翘臀后进爆白浆 | 国产国语对白露脸正在播放 | 国产农村一级国产农村 | 日韩欧美国产一区二区三区 | 欧美一级日韩一级 | a在线视频播放观看免费观看 | 国产人成看黄久久久久久久久 | 欧美成人午夜免费影院手机在线看 | 欧美成人高清视频 | 欧美极品免费 | 日韩成人av影院 | 亚洲一区二区三区国产精品 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲日韩AV无码中文 | 偷拍区另类综合在线 | 蓝男色蓝摄gay裸男china | 国产高潮呻吟久久久 | 欧美午夜剧场特大黄三级性片片免费 | 麻豆果冻传媒2021精品 |