6

我想为我的模型创建一个分页器,但我希望分页仅在我的数据库中保存有模型时出现。

我在我的模板中尝试过

{% if page.paginator.num_pages != 0 %}
    #show pagination ul
{%endif%}

但没有用。显然,即使 objlist 中没有任何对象,创建时的分页器对象也始终只有一页。我不得不使用 object_list.count() 方法解决这个问题

{% if page.object_list.count != 0 %}
    #show pagination ul
{% endif %}

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

4

2 回答 2

6

如果分页器是用 实例化的allow_empty_page=True,那么即使没有对象,它也会只有一页。有关更多信息,请参阅分页器文档

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

{% if page.object_list.count %}
    #show pagination ul
{% endif %}

如果您只想在页面超过一页时出现分页器,请使用:

{% if page.paginator.num_pages > 1 %}
    #show pagination ul
{%endif%}
于 2013-11-12T12:41:48.477 回答
2

allow_empty_first_page=False使用(参见文档)实例化 Paginator这个可选参数是True默认的。

如果allow_empty_first_page是,True那么一个空页面仍然是一个页面。这意味着num_pages即使没有对象也是一个。如果allow_empty_first_pageFalsenum_pages可以为零。

然后,您可以page.paginator.page_range正常迭代:

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

这不会显示任何分页链接,因为page_range最终将是一个空列表。

于 2013-11-12T12:41:17.763 回答