在那一刻,我正在使用Django的object_list来处理分页.如果您在听到我的问题后认为我需要它,我很高兴转到正确的Paginator()课程:
在主页上,我希望分页7,但在所有其他页面上我想分页10.
我该怎么做呢?我真的无法理解它.最接近我必须使其工作导致整页结果被遗漏,所以显然我不希望这样.
我非常感谢任何答案.如果您需要更多信息,请与我们联系.非常感谢.
乔
只需在主页的视图中from django.core.paginator import Paginator创建一个paginator对象p = Paginator(thestuff, 7),p = Paginator(thestuff, 10)在其他任何地方.然后在任何一种情况下绑定p您用于渲染模板的上下文.p.object_list在任何一种情况下都会适当地设置(你似乎说这是你正在使用的方法,对吧?就是你的意思是"Django的object_list"?).
Django 文档有很好的细节和例子(假设你是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)
Run Code Online (Sandbox Code Playgroud)
现在使用MyPaginator完全如上面的文本和示例显示Django自己的用法,除了在创建它时,使用额外的命名参数deltafirst=3使第一页3比正常的每页长度(10)短.因此,您将使用标称长度为10但deltafirst为3的单个分页器,使第一页3比其他所有短.
(可能存在问题,validate_number但我不确定它们是否出现 - 如果它们出现,那么MyPaginator也需要覆盖该方法).
| 归档时间: |
|
| 查看次数: |
1605 次 |
| 最近记录: |