使用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
相关产品推荐
相关产品推荐

