django rest framework 自定义分页返回信息

这一章给大家讲解如何自定义分页的返回信息

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"
        }
    ]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值