python - 为什么即使数据库中没有对象,django paginator.num_pages 也会返回一个?

标签 python django pagination django-templates django-views

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

我在我的模板中试过

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

但是没用。显然,分页器对象在创建时总是只有一页,即使对象列表中没有任何对象。我不得不使用 object_list.count() 方法解决这个问题

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

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

最佳答案

如果分页器是用 allow_empty_page=True 实例化的,那么即使没有对象,它也会有一页。查看paginator docs了解更多信息。

如果你想在对象列表中至少有一个对象时显示分页器,那么使用:

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

如果您只想在多页时显示分页器,请使用:

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

关于python - 为什么即使数据库中没有对象,django paginator.num_pages 也会返回一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19928212/

相关文章:

python - 在python中产生一个线程

python - 在 Django 中创建通用 View

c# - 带分页的 SQL Select 语句 c#

mobile - Rails3 雷和移动设备

python - 过滤 Pandas DataFrame时如何使用lower()方法?

python抓取汇率数据

python - 每次需要使用虚拟环境时都需要激活它吗?

python下划线函数名

python - 如何在 Django 中访问 table_name 变量?

ruby-on-rails - 为滚动界面缓存分页数据并避免客户端重复