31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
from rest_framework.pagination import PageNumberPagination
|
||
from rest_framework.response import Response
|
||
|
||
class CustomPagination(PageNumberPagination):
|
||
"""自定义分页器,返回格式为 {code, message, data}"""
|
||
page_size = 10
|
||
page_size_query_param = 'page_size'
|
||
max_page_size = 100
|
||
|
||
def get_paginated_response(self, data):
|
||
# 为那些没有name字段或name字段为空的项目设置默认值
|
||
for item in data:
|
||
if 'platforms' in item and len(item['platforms']) > 0:
|
||
# 只有当name为空或不存在时,才使用platform_name作为默认值
|
||
if not item.get('name'):
|
||
platform = item['platforms'][0]
|
||
item['name'] = platform.get('platform_name', '')
|
||
|
||
return Response({
|
||
"code": 200,
|
||
"message": "获取数据成功",
|
||
"data": {
|
||
"count": self.page.paginator.count,
|
||
"next": self.get_next_link(),
|
||
"previous": self.get_previous_link(),
|
||
"results": data,
|
||
"page": self.page.number,
|
||
"pages": self.page.paginator.num_pages,
|
||
"page_size": self.page_size
|
||
}
|
||
}) |