我有一个模板,我想显示一个大的数据列表,(从外部API而不是数据库接收)。
虽然我知道这很容易就是ListView,但是因为我不是从数据库中提取数据,所以TemplateView似乎是最好的选择,但是显示数据列表和分页的最佳方法是什么?
目前我有: 图
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
模板:
...
<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 :(得分:2)
您仍然可以继承ListView并覆盖get_queryset()
方法,该方法必须返回一个iterable。这将使您能够通常使用分页
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']
不要忘记在您的设置中设置QUOTES_PER_PAGE
并将其导入您的views.py
然后在模板中,您可以使用docs中的标准分页代码段。