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所需要的。