Django:第一页上的分页不同
发布时间:2020-12-20 11:11:12 所属栏目:Python 来源:网络整理
导读:在那一刻,我正在使用Django的object_list来处理分页.如果您在听到我的问题后认为我需要它,我很高兴转到正确的Paginator()课程: 在主页上,我希望分页7,但在所有其他页面上我想分页10. 我该怎么做呢?我真的无法理解它.最接近我必须使其工作导致整页结果被遗
在那一刻,我正在使用Django的object_list来处理分页.如果您在听到我的问题后认为我需要它,我很高兴转到正确的Paginator()课程:
在主页上,我希望分页7,但在所有其他页面上我想分页10. 我该怎么做呢?我真的无法理解它.最接近我必须使其工作导致整页结果被遗漏,所以显然我不希望这样. 我非常感谢任何答案.如果您需要更多信息,请与我们联系.非常感谢. 乔 解决方法
只需从
django.core.paginator导入Paginator并在主页视图中将p = Paginator(thestuff,7)作为paginator对象,p = Paginator(thestuff,10).然后在任何一种情况下,在用于渲染模板的上下文中绑定p.在任何一种情况下都会适当地设置p.object_list(你似乎说这是你正在使用的方法,对吧?即,你的意思是“Django的object_list”?).
Django docs有很好的细节和例子(假设你的版本是1.0或更高).如果你无法使它工作,你能告诉我们(一个仍然失败的简化版本)您的模板和视图代码吗? 编辑:现在已经清楚地显示了问题,我认为应该通过继承Django的核心分页器来解决,如下所示: from django.core.paginator import Paginator,Page class MyPaginator(Paginator): def __init__(self,**kw): self.deltafirst = kw.pop('deltafirst',0) Paginator.__init__(self,**kw) def page(self,number): "Returns a Page object for the given 1-based page number." number = self.validate_number(number) if number == 1: bottom = 0 top = self.per_page - self.deltafirst else: bottom = (number - 1) * self.per_page - self.deltafirst top = bottom + self.per_page if top + self.orphans >= self.count: top = self.count return Page(self.object_list[bottom:top],number,self) 现在使用MyPaginator完全如上面的文本和示例显示Django自己的用法,除了在创建它时,使用额外的命名参数deltafirst = 3使第一页3比正常的每页长度(10)短.因此,您将使用标称长度为10但deltafirst为3的单个分页器,使第一页3比其他所有短. (validate_number中可能存在问题,但我不确定它们是否会出现 – 如果它们出现,那么MyPaginator也需要覆盖该方法). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |