2016-08-17 58 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分頁。