2017-06-28 4 views
1

Ich habe eine Vorlage, wo ich eine große Liste von Daten anzeigen möchte (von der externen API anstelle von DB erhalten).Seitennummerierung in Django TemplateView

Obwohl ich weiß, dass dies einfach ist, ist ListView, aber da ich nicht Daten aus der Datenbank ziehe, scheint TemplateView die beste Wahl, aber was wäre die beste Möglichkeit, die Liste der Daten anzuzeigen und paginate es?

Zur Zeit habe ich: Ansicht

class QuotesResultsView(TemplateView): 
    template_name = 'site/quotes.html' 

    def get_context_data(self, **kwargs): 
     context = super().get_context_data(**kwargs) 
     context['quotes'] = self.request.session['quotes']['data'] 
     return context 

Vorlage:

....

 <div class="about"> 

      {% for quote in quotes %} 
      <h3>Supplier:{{ quote.supplierName }}</h3> 
       <div> 
       <p>Annual Cost: {{ quote.newSpend }}</p> 
       <p>Savings: {{ quote.newSavings }}</p> 
      </div> 
      <button class="btn btn-cta-primary">Proceed</button> 
      {% endfor %} 
     </div><!--//about--> 
+0

Wie erhalten Sie diese Daten? Es sieht nicht so aus, als wäre es aus Ihrer Sicht – Emile

Antwort

2

Sie können immer noch Listview erben und get_queryset() Methode überschreiben, die eine iterable zurückgeben muss. Dies ermöglicht es Ihnen Paginierung zu verwenden, wie in der Regel

class QuotesResultsView(ListView): 
    template_name = 'site/quotes.html' 
    paginate_by = settings.QUOTES_PER_PAGE 
    context_object_name = 'quotes' 

    def get_queryset(self): 
     # Looks like your data is already an iterable 
     # if not convert it to iterable and return 
     return self.request.session['quotes']['data'] 

Vergessen Sie nicht QUOTES_PER_PAGE in Ihren Einstellungen zu setzen und es in Ihrem views.py

dann in Vorlage importieren Sie Ihre Standard-Paginierung Ausschnitt aus docs verwenden können.

+0

Perfekter Dank. – Yunti

Verwandte Themen