django pagination 自定義分頁

2021-09-10 10:59:38 字數 2051 閱讀 3306

#3.4 如果有的介面需要顯示與其他介面數量不同的資料,該怎麼辦

python3.6

django==2.0.7

djangorestframework==3.8.2

from rest_framework.pagination  import pagenumberpagination

from rest_framework.response import response

from collections import ordereddict

class mycustompagination(pagenumberpagination):

page_size = 5 # 每頁顯示多少個

page_size_query_param = "size" # 預設每頁顯示3個,可以通過傳入pager1/?page=2&size=4,改變預設每頁顯示的個數

max_page_size = 100 # 最大頁數不超過100

page_query_param = "page" # 獲取頁碼數的

def get_paginated_response(self, data):

"""輸出格式"""

return response(ordereddict([

('count', self.page.paginator.count), # 整個資料的個數

('success', true), # 驗證訊息

('results', data) # 當前頁的資料

]))

#3.3.1 沒有使用分頁

檢視

class get_view(mixins.createmodelmixin,

mixins.listmodelmixin,

genericviewset):

pagination_class = none # 沒有使用分頁(也可以注釋掉)

queryset = models.student.objects.all()

serializer_class = get_sreializer

介面資料

[,,

,,

......

...]

#3.3.2 使用分頁

檢視

class get_view(mixins.createmodelmixin,

mixins.listmodelmixin,

genericviewset):

pagination_class = mycustompagination # 使用剛剛自定義的分頁

queryset = models.student.objects.all()

serializer_class = get_sreializer

介面資料

,,,

,]

}

需求:

如何處理z介面

嘗試:

檢視

class mychildcustompagination(mycustompagination):

page_size = 1 # 每頁顯示多少個

class get_view(mixins.createmodelmixin,

mixins.listmodelmixin,

genericviewset):

pagination_class = mychildcustompagination # 子類

queryset = models.student.objects.all()

serializer_class = get_sreializer

介面資料

]}

ObjectDataSource自定義分頁

objectdatasource是唯一支援自定義分頁的資料來源,要實現分頁效果,首先要將objectdatasource.enablepageing屬性設為true,通過三個屬性實現 startrowindex,maximumrows和selectcountmethod,效果如圖 實現分頁有兩種情況...

ObjectDataSource自定義分頁

objectdatasource是唯一支援自定義分頁的資料來源,要實現分頁效果,首先要將objectdatasource.enablepageing屬性設為true,通過三個屬性實現 startrowindex,maximumrows和selectcountmethod,效果如圖 實現分頁有兩種情況...

自定義 如何自定義協議

何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...