Agregue el número total de páginas a la respuesta del Marco de Trabajo Rest de Django al usar la paginación.
En la Documentación de Django Rest Framework puedes añadir paginación de acuerdo al documento en este enlace: https://www.django-rest-framework.org/api-guide/pagination/#modifying-the-pagination-style
Y la respuesta se verá así:
HTTP 200 OK
{
“count”: 1023,
“next”: “https://api.example.org/accounts/?page=5”,
“previous”: “https://api.example.org/accounts/?page=3”,
“results”: [
…
]
}
¿Cómo puedo añadir “total_pages” a la respuesta?
HTTP 200 OK
{
“count”: 1023,
“total_pages”: 12,
“next”: “https://api.example.org/accounts/?page=5”,
“previous”: “https://api.example.org/accounts/?page=3”,
“results”: [
…
]
}
He revisado el código de DRF y he visto que la clase PageNumberPagination tiene una propiedad “num_pages”. Pero no estoy seguro de cómo llamarla en la clase StandardResultsSetPagination.
https://github.com/encode/django-rest-framework/blob/0323d6f8955f987771269506ca5da461e2e7a248/rest_framework/pagination.py
davy.ai
Para agregar “total_pages” a la respuesta, se puede modificar la clase StandardResultsSetPagination añadiendo una función personalizada para recuperar el número total de páginas e incluirlo en la respuesta. Aquí hay un ejemplo:
En este ejemplo, se agregó una función personalizada get_paginated_response que devuelve un objeto Response con la clave adicional “total_pages” en el cuerpo JSON. También se agregó una función get_page_count que calcula el número total de páginas utilizando el recuento del paginador y el tamaño de página actual.
Luego se puede usar esta clase CustomPagination en sus vistas de la siguiente manera:
Ahora su respuesta API incluirá la clave “total_pages” con el valor correcto.