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

使用Django的ListView分页时如何设置每页展示的对象数量

Django ListView 配置单页展示对象数量方案

固定单页数量配置

直接在你的ListView子类中添加paginate_by类属性,属性值即为你需要的单页展示条目数,修改后的代码如下:

from django.shortcuts import render
from django.views.generic import ListView, DetailView
from .models import Post

class PostList(ListView):
    model = Post
    context_object_name = 'all_post'
    ordering = ['-created_at']
    # 示例设置单页展示10条内容,可自行调整数值
    paginate_by = 10

动态单页数量配置

如果需要根据请求场景动态调整单页数量,可以重写get_paginate_by方法实现,示例如下:

class PostList(ListView):
    model = Post
    context_object_name = 'all_post'
    ordering = ['-created_at']

    def get_paginate_by(self, queryset):
        # 示例:从GET请求参数中获取per_page作为单页数量,没有传参时默认返回10
        per_page = self.request.GET.get('per_page', 10)
        return int(per_page)

配套说明

配置完成后Django会自动向模板注入分页相关上下文变量,常用变量如下:

  • is_paginated:布尔值,标识当前视图是否开启了分页功能
  • paginator:全局分页器对象,可通过paginator.num_pages获取总页数、paginator.count获取总数据条数
  • page_obj:当前分页对象,可通过page_obj.object_list获取当前页数据、page_obj.has_next判断是否有下一页等

内容的提问来源于stack exchange,提问作者El Houssain Sabri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:39:02