Django Paginator. Как задать количество страниц или элементов списка
Мне нужно создать объект Paginator
для function based
view
. Когда я отправляю запрос в googleapi, я получаю json
с ключами totalItems
и items
. GoogleApi пагинация запроса до 10 элементов. Допустим, totalItems
составляет 800, поэтому мне нужно как-то сообщить Django Paginator
, что элементов больше, чем я получаю в запросе.
Моей первой идеей было просто создать список с пустыми элементами и элементами, полученными из API, с индексами, соответствующими номеру страницы, но я полагаю, что для этого есть какой-нибудь хороший чистый трюк"
VIEW
def get_books(request):
page = request.GET.get('page', 1)
start_index = (page - 1) * 10
params = {'q': RoweryMogąUratowaćŚwiat, startIndex: start_index}
result = requests.get('https://www.googleapis.com/books/v1/volumes?,params=params)
total = result['totalItems']
items = result['items']
my_list = []
for i in range(total)
if start_index < i < start_index + 10
my_list.append(items[i - start_index])
else:
my_list.append('')
paginator = Paginator(my_list, 10)
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def get_books(request):
result = requests.get('https://www.googleapis.com/books/v1/volumes?,params=params)
items = result['items']
page = request.GET.get('page', 1)
paginator = Paginator(items, 10)
try:
data = paginator.page(page)
except PageNotAnInteger:
data = paginator.page(1)
except EmptyPage:
data = paginator.page(paginator.num_pages)
return render(request, 'books.html', { 'data': data })