2016-08-17 60 views
0

使用Django Pagination时,有任何方法可以在http请求中指定page_size吗?我想在请求中没有发送时使用默认的page_size。在http请求(Django)中发送page_size

在我settings.py,我有:

REST_FRAMEWORK = { 
    'DEFAULT_AUTHENTICATION_CLASSES': (
     'rest_framework.authentication.TokenAuthentication', 
    ), 
    'DEFAULT_RENDERER_CLASSES': (
     'rest_framework.renderers.JSONRenderer', 
    ), 
    'DEFAULT_METADATA_CLASS': 'myApp.views.MyAppMetadata', 
    'PAGINATE_BY': 20, 
    'USE_ABSOLUTE_URLS': True, 
    'DEFAULT_FILTER_BACKENDS': (
     'rest_framework.filters.DjangoObjectPermissionsFilter', 
     'rest_framework.filters.DjangoFilterBackend', 
     'rest_framework.filters.OrderingFilter' 
    ), 
    'DEFAULT_PAGINATION_CLASS': 'myApp.paginators.pagination.CustomPagination', 
} 

这是我的分页类:

class CustomPagination(PageNumberPagination): 
    def get_paginated_response(self, data): 
     return Response(OrderedDict([ 
      ('count', self.page.paginator.count), 
      ('next', self.get_next_link()), 
      ('previous', self.get_previous_link()), 
      ('current_page', self.page.number), 
      ('total_pages', self.page.paginator.num_pages), 
      ('results', data) 
     ])) 

应如何page_size_query_param参数进行设置?

回答

2

与链接到的页面非常相似,表示您可以定义page_size_query_param来指示确定页面大小的查询参数。

编辑

你只需把它放在你的分页子类。

class CustomPagination(PageNumberPagination): 
    page_size_query_param = 'page_size' 
    ... 
1

您可以通过使用Django Pagination

from django.core.paginator import Paginator 

objects = ['john', 'paul', 'george', 'ringo'] 
p = Paginator(objects, page_size) 

page1_data = p.page(page_number) 

实现这一目标现在,您可以通过它接收通过params中,通过任何你想要的其他方式改变PAGE_SIZE

注意:您使用的是DRF分页。