这一章给大家讲解如何自定义分页的返回信息
1、settings.py 定义自定义返回信息的脚本位置
#settings.conf
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'common.utils.custom_pagination.LargeResultsSetPagination',
'PAGE_SIZE': 20, #可选可不选,如果在此处填写,则优先级大于自定义里面的page
}
2、编写自定义返回分页信息脚本
from rest_framework.pagination import PageNumberPagination,LimitOffsetPagination
from collections import OrderedDict
from rest_framework.response import Response
class LargeResultsSetPagination(LimitOffsetPagination):
page_size = 10
page_size_query_param = 'page_size'
max_page_size = 10000
def get_paginated_response(self, data):
code = 200
msg = 'success'
if not data:
code = 404
msg = "data not found"
return Response(OrderedDict([
('code',code),
('msg', msg),
('count', self.count),
('next', self.get_next_link()),
('previous', self.get_previous_link()),
('data', data),
]))
这样当我们数据多的时候就会就会进行分页提示
{
"code": 200,
"msg": "success",
"count": 5,
"next": null,
"previous": null,
"data": [
{
"id": 9,
"hostname": "sj-jn-27-221.103.134",
"type": 2,
"vendor": "2",
"ip": "12.12.12.38",
"status": 0,
"create_time": "2018-11-16T16:51:23.238087+08:00",
"update_time": "2018-11-16T16:51:23.238109+08:00"
},
{
"id": 7,
"hostname": "sj-jn-27-221.103.133",
"type": 1,
"vendor": "2",
"ip": "12.12.12.37",
"status": 0,
"create_time": "2018-11-16T16:50:54.632770+08:00",
"update_time": "2018-11-16T16:50:54.632827+08:00"
},
{
"id": 5,
"hostname": "sj-jn-27-221.103.132",
"type": 0,
"vendor": "2",
"ip": "12.12.12.36",
"status": 0,
"create_time": "2018-11-16T16:49:04.951364+08:00",
"update_time": "2018-11-16T16:49:04.951419+08:00"
},
{
"id": 3,
"hostname": "sj-jn-27-221.103.131",
"type": 0,
"vendor": "2",
"ip": "12.12.12.35",
"status": 0,
"create_time": "2018-11-16T16:46:44.996822+08:00",
"update_time": "2018-11-16T16:46:44.996845+08:00"
},
{
"id": 1,
"hostname": "sj-jn-27-221.103.130",
"type": 0,
"vendor": "19",
"ip": "12.12.12.34",
"status": 0,
"create_time": "2018-11-16T16:45:30.665053+08:00",
"update_time": "2018-11-16T16:45:30.665087+08:00"
}
]
}