From a1a02ac4a48bbc0614cc7b588afe1d0932b8e3a1 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 22 Aug 2019 17:26:16 +0200 Subject: Manage pagination --- showcase/models.py | 19 ++++++++++++- showcase/templates/showcase/show_case.html | 45 ++++++++++++++++++++++-------- 2 files changed, 51 insertions(+), 13 deletions(-) diff --git a/showcase/models.py b/showcase/models.py index 1510562..2623c6a 100644 --- a/showcase/models.py +++ b/showcase/models.py @@ -3,6 +3,7 @@ import requests from django.conf import settings from django.core.cache import cache +from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator from django.db import models from django.utils.translation import ugettext_lazy as _ @@ -81,7 +82,6 @@ class ExternalSource(models.Model): @property def data(self): - # TODO: cache return self.get_data() def get_item(self, item_number): @@ -105,3 +105,20 @@ class ShowCase(BasePage): def data(self): return self.external_source.get_data() + def get_context(self, request): + context = super(ShowCase, self).get_context(request) + page = request.GET.get('page', 1) + + paginator = Paginator(self.data, 10) + try: + paginated_data = paginator.page(page) + except PageNotAnInteger: + paginated_data = paginator.page(1) + except EmptyPage: + paginated_data = paginator.page(paginator.num_pages) + + context['paginated_data'] = paginated_data + if paginator.num_pages > 1: + context['paginator'] = paginator + return context + diff --git a/showcase/templates/showcase/show_case.html b/showcase/templates/showcase/show_case.html index 6a2f13b..15bc9c5 100644 --- a/showcase/templates/showcase/show_case.html +++ b/showcase/templates/showcase/show_case.html @@ -26,21 +26,42 @@ {% if page.data %}
- {% for item in page.data %} -
+ {% for item in paginated_data.object_list %} +
- {% if item.images.0.thumbnail %} - - {% endif %} - -
+ {% if item.images.0.thumbnail %}{% endif %} +
+ {{item.denomination}} + +
- {% endfor %} +
+ {% endfor %}
+ +{% if paginator %} +
+ +{% endif %} + {% endif %} {% endblock %} -- cgit v1.2.3