Django:访问num_pages以生成分页
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django:访问num_pages以生成分页相关的知识,希望对你有一定的参考价值。
[我想在使用ListView
和pagination
时在模板中生成一定范围的页面,以动态生成用于分页的页面数:
https://getbootstrap.com/docs/4.0/components/pagination/
我的第一次尝试是为page_obj.paginator.num_pages
中的每个元素创建一个for循环,并得到错误int is not iterable
:
% if is_paginated %
<ul class="pagination">
% for i in page_obj.paginator.num_pages %
<li class="page-item">
<span class="page-link">
<a href="/catalogo?page=i">
<span class="sr-only">(current)</span>
</span>
</li>
% endfor %
</ul>
% endif
然后,我发现不存在范围模板过滤器,因为该计算应在视图中完成,并将范围发送到模板,而不是在template
中生成。参见:
https://code.djangoproject.com/ticket/13088
所以我该如何访问内部的
page_obj.paginator.num_pages
查看???
我的LisView:
class CatalogoListView(ListView):
model = UnitaryProduct
template_name = "shop/catalogo.html"
paginate_by = 10
def get_queryset(self):
filter_val = self.request.GET.get('filtro', 'todas')
order = self.request.GET.get('orderby', 'created')
if filter_val == "todas":
context = UnitaryProduct.objects.all().filter(available=True).order_by('-created')
return context
else:
context = UnitaryProduct.objects.filter(
subcategory2=filter_val,
).filter(available=True).order_by('-created')
return context
def get_context_data(self, **kwargs):
context = super(CatalogoListView, self).get_context_data(**kwargs)
context['filtro'] = self.request.GET.get('filtro', 'todas')
context['orderby'] = self.request.GET.get('orderby', 'created')
context['category'] = Category.objects.get(slug="catalogo")
return context
答案
num_pages
是存储页面总数的整数,因此不可迭代。
以上是关于Django:访问num_pages以生成分页的主要内容,如果未能解决你的问题,请参考以下文章