Python 为什么django paginator.num_页面即使在数据库中没有对象时也返回一个?

Python 为什么django paginator.num_页面即使在数据库中没有对象时也返回一个?,python,django,pagination,django-templates,django-views,Python,Django,Pagination,Django Templates,Django Views,我想为我的模型创建一个分页器,但我希望分页仅在数据库中保存了模型时才显示 我试过了我的模板 {% if page.paginator.num_pages != 0 %} #show pagination ul {%endif%} 但是没有起作用。显然,创建paginator对象时总是有一个页面,即使objlist中没有任何对象。我必须使用object_list.count()方法来解决这个问题 我还没有足够的数据来测试它,但这是正确的方法吗?还有更好的吗?用allow\u empty\

我想为我的模型创建一个分页器,但我希望分页仅在数据库中保存了模型时才显示

我试过了我的模板

{% if page.paginator.num_pages != 0 %}
    #show pagination ul
{%endif%}
但是没有起作用。显然,创建paginator对象时总是有一个页面,即使objlist中没有任何对象。我必须使用object_list.count()方法来解决这个问题


我还没有足够的数据来测试它,但这是正确的方法吗?还有更好的吗?

allow\u empty\u first\u page=False实例化Paginator(请参阅)。默认情况下,此可选参数为
True

如果
allow\u empty\u first\u page
True
则空页面仍然是页面。这意味着即使没有对象,
num_pages
也是一个。如果
allow\u empty\u first\u page
False
num\u page
可以为零

然后,您可以像往常一样在
page.paginator.page\u范围内迭代:

{% for page_number in page.paginator.page_range %}
    # show link to page
{% endfor %}

这不会显示任何分页链接,因为
page\u range
最终将成为一个空列表。

如果分页器实例化为
allow\u empty\u page=True
,则即使没有对象,它也将有一个页面。有关更多信息,请参阅

如果要在对象列表中至少有一个对象时显示分页器,请使用:

{% if page.object_list.count %}
    #show pagination ul
{% endif %}
{% if page.paginator.num_pages > 1 %}
    #show pagination ul
{%endif%}
如果您只想在有多个页面时显示分页器,请使用:

{% if page.object_list.count %}
    #show pagination ul
{% endif %}
{% if page.paginator.num_pages > 1 %}
    #show pagination ul
{%endif%}

我最终使用了count方法,因为我想创建一个“动态”分页器。我不想显示所有页面,但我试图只显示一些(例如前5页),然后是点(…),然后是最后一页。所以paginator.page_range并没有这样做,因为它会在每个页面上进行迭代。是的,这就是我如何使用count来完成的。但是我是用零值检查的,因为我在文档中没有看到允许空页面:)谢谢+1
{%if page.paginator.num_pages>1%}
这正是我决定是否显示分页navgigation所需要的。