在Django rest框架分页中获取多个页面

2024-09-30 20:21:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我在django rest框架中设置分页

设置:

REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 4,
}

我得到:

{
"count": 10,
"next": "http://127.0.0.1:8000/api/list?page=2",
"previous": null,
"results": [
    {
        "name": "lorem ipsum1",
        "image": "http://127.0.0.1:8000/media/pictures/2.jpg",
        "description": "lorem ipsum5"
    },
    {
        "name": "lorem2",
        "image": "http://127.0.0.1:8000/media/pictures/1.jpg",
        "description": "lorem ipsum4"
    },
    {
        "name": "lorem ipsum3",
        "image": "http://127.0.0.1:8000/media/pictures/3_miVerQW.jpg",
        "description": "lorem ipsum3"
    },
    {
        "name": "lorem ipsum4",
        "image": "http://127.0.0.1:8000/media/pictures/4.jpg",
        "description": "lorem ipsum2"
    }
]
}

例如,当我发出http请求时,http://127.0.0.1:8000/api/list?page=1我只得到第1页的内容(上面的json)。是否可以通过一个http请求(可能类似于http://127.0.0.1:8000/api/list?page=1-3)获取多个页面的内容(例如页面1-3的内容)


Tags: nameimagerestapihttp内容pagedescription
1条回答
网友
1楼 · 发布于 2024-09-30 20:21:38

您不能获取多个页面,但可以配置页面的大小。见https://www.django-rest-framework.org/api-guide/pagination/#pagenumberpagination

from rest_framework.pagination import PageNumberPagination

class MyPageNumberPagination(PageNumberPagination):
    page_size_query_param = 'page_size'

然后在配置中将这个MyPageNumberPagination类设置为DEFAULT_PAGINATION_CLASS,或者为特定视图设置为pagination_class

然后您可以请求/api/list?page=1&page_size=12一次获取12个项目,效果与一次获取3个页面相同

相关问题 更多 >