【问题标题】:More efficient way of paginating in Django在 Django 中更有效的分页方式
【发布时间】:2015-06-08 17:39:47
【问题描述】:

我正在尝试在 django 项目中实现分页。

我查看了default django paginator,发现了这个例子:

def listing(request):
    contact_list = Contacts.objects.all()
    paginator = Paginator(contact_list, 25) # Show 25 contacts per page

    page = request.GET.get('page')
    try:
        contacts = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        contacts = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of    results.
        contacts = paginator.page(paginator.num_pages)

    return render_to_response('list.html', {"contacts": contacts})

看起来它从数据库中获取所有对象并将所需的对象返回到模板。

这不是很有效吧?

我还查看了django-endless-pagination,这似乎很难自定义。

我正在寻找易于定制的解决方案,因为我会将其与 haystackelasticsearch 集成

我还能用什么?

【问题讨论】:

标签: python django pagination


【解决方案1】:

Paginator 不会获取所有对象。与您的情况一样,您要求 25 个对象。因此,每个页面将包含 25 个对象。当您尝试访问下一页时,将发送一个新的 DB 请求以访问对象 26-50。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 2010-11-06
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2020-03-15
    相关资源
    最近更新 更多