You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中如何在ListView视图内获取分页总页数?

在Django ListView中获取分页总页数(视图类内实现)

要在ListView的视图类中获取分页总页数,你可以利用Django内置的Paginator类,结合ListView提供的方法实现。修改你的代码如下:

class MyList(ListView):
    model = MyModel
    template_name = "template.html"
    paginate_by = 5

    def how_many(self):
        # 获取视图对应的查询集
        queryset = self.get_queryset()
        # 通过ListView内置方法创建分页器实例
        paginator = self.get_paginator(queryset, self.paginate_by)
        # 从分页器中提取总页数
        how_many_pages = paginator.num_pages
        return how_many_pages

关键点说明:

  • self.get_queryset():获取ListView对应的查询集,比直接调用self.model.objects.all()更灵活——如果后续重写get_queryset实现自定义筛选逻辑,该调用会自动适配。
  • self.get_paginator():ListView的内置方法,会根据传入的查询集和每页数量创建Paginator实例,同时自动处理allow_empty_first_page等默认配置,和ListView的分页行为保持一致。
  • paginator.num_pages:Paginator对象的属性,直接返回分页后的总页数,空查询集默认返回1页(符合ListView的默认分页规则)。

如果你的how_many方法是在get_context_data之后调用(比如往模板传值时),也可以直接用self.paginator.num_pages,但上面的写法更通用,无论在视图生命周期的哪个阶段调用都能正确获取结果。

内容的提问来源于stack exchange,提问作者Daniel Acuña

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:30:54