mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-26 11:33:59 +03:00
Update docs
This commit is contained in:
parent
18cc0230bf
commit
efb42ff7d0
|
@ -208,6 +208,30 @@ Note that the `paginate_queryset` method may set state on the pagination instanc
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
|
Suppose we want to replace the default pagination output style with a modified format that includes the next and previous links under in a nested 'links' key. We could specify a custom pagination class like so:
|
||||||
|
|
||||||
|
class CustomPagination(pagination.PageNumberPagination):
|
||||||
|
def get_paginated_response(self, data):
|
||||||
|
return Response({
|
||||||
|
'links': {
|
||||||
|
'next': self.get_next_link(),
|
||||||
|
'previous': self.get_previous_link()
|
||||||
|
},
|
||||||
|
'count': self.page.paginator.count,
|
||||||
|
'results': data
|
||||||
|
})
|
||||||
|
|
||||||
|
We'd then need to setup the custom class in our configuration:
|
||||||
|
|
||||||
|
REST_FRAMEWORK = {
|
||||||
|
'DEFAULT_PAGINATION_CLASS': 'my_project.apps.core.pagination.CustomPagination',
|
||||||
|
'PAGE_SIZE': 100
|
||||||
|
}
|
||||||
|
|
||||||
|
Note that if you care about how the ordering of keys is displayed in responses in the browsable API you might choose to use an `OrderedDict` when constructing the body of paginated responses, but this is optional.
|
||||||
|
|
||||||
|
## Header based pagination
|
||||||
|
|
||||||
Let's modify the built-in `PageNumberPagination` style, so that instead of include the pagination links in the body of the response, we'll instead include a `Link` header, in a [similar style to the GitHub API][github-link-pagination].
|
Let's modify the built-in `PageNumberPagination` style, so that instead of include the pagination links in the body of the response, we'll instead include a `Link` header, in a [similar style to the GitHub API][github-link-pagination].
|
||||||
|
|
||||||
class LinkHeaderPagination(pagination.PageNumberPagination):
|
class LinkHeaderPagination(pagination.PageNumberPagination):
|
||||||
|
@ -234,7 +258,7 @@ To have your custom pagination class be used by default, use the `DEFAULT_PAGINA
|
||||||
|
|
||||||
REST_FRAMEWORK = {
|
REST_FRAMEWORK = {
|
||||||
'DEFAULT_PAGINATION_CLASS': 'my_project.apps.core.pagination.LinkHeaderPagination',
|
'DEFAULT_PAGINATION_CLASS': 'my_project.apps.core.pagination.LinkHeaderPagination',
|
||||||
'DEFAULT_PAGE_SIZE': 10
|
'PAGE_SIZE': 100
|
||||||
}
|
}
|
||||||
|
|
||||||
API responses for list endpoints will now include a `Link` header, instead of including the pagination links as part of the body of the response, for example:
|
API responses for list endpoints will now include a `Link` header, instead of including the pagination links as part of the body of the response, for example:
|
||||||
|
|
|
@ -17,6 +17,15 @@ Some highlights include:
|
||||||
|
|
||||||
The pagination API has been improved, making it both easier to use, and more powerful.
|
The pagination API has been improved, making it both easier to use, and more powerful.
|
||||||
|
|
||||||
|
A guide to the headline features follows. For full details, see [the pagination documentation][pagination].
|
||||||
|
|
||||||
|
Note that as a result of this work a number of settings keys and generic view attributes are now moved to pending deprecation. Controlling pagination styles is now largely handled by overriding a pagination class and modifying its configuration attributes.
|
||||||
|
|
||||||
|
* The `PAGINATE_BY` settings key will continue to work but is now pending deprecation. The more obviously named `PAGE_SIZE` settings key should now be used instead.
|
||||||
|
* The `PAGINATE_BY_PARAM`, `MAX_PAGINATE_BY` settings keys will continue to work but are now pending deprecation, in favor of setting configuration attributes on the configured pagination class.
|
||||||
|
* The `paginate_by`, `page_query_param`, `paginate_by_param` and `max_paginate_by` generic view attributes will continue to work but are now pending deprecation, in favor of setting configuration attributes on the configured pagination class.
|
||||||
|
* The `pagination_serializer_class` view attribute and `DEFAULT_PAGINATION_SERIALIZER_CLASS` settings key **are no longer valid**. The pagination API does not use serializers to determine the output format, and you'll need to instead override the `get_paginated_response` method on a pagination class in order to specify how the output format is controlled.
|
||||||
|
|
||||||
#### New pagination schemes.
|
#### New pagination schemes.
|
||||||
|
|
||||||
Until now, there has only been a single built-in pagination style in REST framework. We now have page, limit/offset and cursor based schemes included by default.
|
Until now, there has only been a single built-in pagination style in REST framework. We now have page, limit/offset and cursor based schemes included by default.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user