为什么访问page_range在shell和模板中有所不同?

时间:2019-04-06 15:04:28

标签: python django pagination

我是Django的新手,目前正在学习分页。这个问题使我感到困惑,我需要您的帮助以帮助我理解它。

为了访问shell中的page_range值,我直接在pages.page_range中键入以下代码:

>>> from django.core.paginator import Paginator
>>> posts = [1, 2, 3, 4, 5, 6, 7]
>>> pages = Paginator(posts, 2)
>>> pages.page_range  # here
range(1, 5)

但是在模板中,为了访问page_range的值,我们需要输入page_obj.paginator.page_range

问题是,如果在没有page_range之类的.paginator中介的情况下访问page_obj.page_range,为什么会抛出错误,因为在shell中我们不需要键入pages.paginator.page_range

请帮助我了解我在这里缺少的内容。谢谢

编辑:page_obj除了当前页面以外还有其他含义吗?

1 个答案:

答案 0 :(得分:0)

因为page_obj不是Paginator类的实例。它是Page类的实例,该实例具有与之关联的paginator对象。 (请参见源here)。因此,绝对必须从paginator对象访问任何东西,例如page_obj.paginator.page_range

但是,分页程序对象本身也会传递给上下文(请参见源here)。如果您想要这样paginator.page_range

,则可以直接访问它
相关问题