mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-06 05:20:12 +03:00
Merge 843daa37bf
into 84260b5dd6
This commit is contained in:
commit
7577e1766a
|
@ -85,12 +85,13 @@ We could now use our pagination serializer in a view like this.
|
|||
|
||||
The generic class based views `ListAPIView` and `ListCreateAPIView` provide pagination of the returned querysets by default. You can customise this behaviour by altering the pagination style, by modifying the default number of results, by allowing clients to override the page size using a query parameter, or by turning pagination off completely.
|
||||
|
||||
The default pagination style may be set globally, using the `DEFAULT_PAGINATION_SERIALIZER_CLASS`, `PAGINATE_BY`, `PAGINATE_BY_PARAM`, and `MAX_PAGINATE_BY` settings. For example.
|
||||
The default pagination style may be set globally, using the `DEFAULT_PAGINATION_SERIALIZER_CLASS`, `PAGINATE_BY`, `PAGINATE_BY_PARAM`, `MAX_PAGINATE_BY`, and `PAGINATE_KWARG` settings. For example.
|
||||
|
||||
REST_FRAMEWORK = {
|
||||
'PAGINATE_BY': 10, # Default to 10
|
||||
'PAGINATE_BY_PARAM': 'page_size', # Allow client to override, using `?page_size=xxx`.
|
||||
'MAX_PAGINATE_BY': 100 # Maximum limit allowed when using `?page_size=xxx`.
|
||||
'PAGINATE_KWARG': 'p' # Use `p` rather than `page` when paginating
|
||||
}
|
||||
|
||||
You can also set the pagination style on a per-view basis, using the `ListAPIView` generic class-based view.
|
||||
|
|
|
@ -60,7 +60,7 @@ class GenericAPIView(views.APIView):
|
|||
paginate_by_param = api_settings.PAGINATE_BY_PARAM
|
||||
max_paginate_by = api_settings.MAX_PAGINATE_BY
|
||||
pagination_serializer_class = api_settings.DEFAULT_PAGINATION_SERIALIZER_CLASS
|
||||
page_kwarg = 'page'
|
||||
page_kwarg = api_settings.PAGINATE_KWARG
|
||||
|
||||
# The filter backend classes to use for queryset filtering
|
||||
filter_backends = api_settings.DEFAULT_FILTER_BACKENDS
|
||||
|
|
|
@ -5,13 +5,14 @@ be used for paginated responses.
|
|||
from __future__ import unicode_literals
|
||||
from rest_framework import serializers
|
||||
from rest_framework.templatetags.rest_framework import replace_query_param
|
||||
from rest_framework.settings import api_settings
|
||||
|
||||
|
||||
class NextPageField(serializers.Field):
|
||||
"""
|
||||
Field that returns a link to the next page in paginated results.
|
||||
"""
|
||||
page_field = 'page'
|
||||
page_field = api_settings.PAGINATE_KWARG
|
||||
|
||||
def to_representation(self, value):
|
||||
if not value.has_next():
|
||||
|
@ -26,7 +27,7 @@ class PreviousPageField(serializers.Field):
|
|||
"""
|
||||
Field that returns a link to the previous page in paginated results.
|
||||
"""
|
||||
page_field = 'page'
|
||||
page_field = api_settings.PAGINATE_KWARG
|
||||
|
||||
def to_representation(self, value):
|
||||
if not value.has_previous():
|
||||
|
|
|
@ -61,6 +61,7 @@ DEFAULTS = {
|
|||
|
||||
# Pagination
|
||||
'PAGINATE_BY': None,
|
||||
'PAGINATE_KWARG': 'page',
|
||||
'PAGINATE_BY_PARAM': None,
|
||||
'MAX_PAGINATE_BY': None,
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user