使用引导程序进行 Django 分页

Posted

技术标签:

【中文标题】使用引导程序进行 Django 分页【英文标题】:Django pagination with bootstrap 【发布时间】:2017-09-20 07:59:54 【问题描述】:

我即将在我的联系人列表中添加一个分页。我整天坐在上面,不知道我弄混了什么。重要的是我确实有一个有效的过滤器 - 所以我可以缩小列表。但据我了解,分页无论如何都应该起作用。就我而言,我什么也没看到,所以我的猜测是首先“如果”失败。 如果你能指出我正确的方向。 最好的问候。

Views.py

def ContactsList(request):

    contacts_list = Contact.objects.all()
    Contacts_filter = LFilter(request.GET, queryset=contacts_list)

    #pagination
    page = request.GET.get('page', 1)
    paginator = Paginator(contacts_list, 20)

    try:
        contacts = paginator.page(page)
    except PageNotAnInteger:
        contacts = paginator.page(1)
    except EmptyPage:
        contacts = paginator.page(paginator.num_pages)
    return render(request, 'index.html', context, 'filter': contacts_filter)

模板部分:

% if contacts.has_other_pages %
  <ul class="pagination">
    % if contacts.has_previous %
      <li><a href="?page= contacts.previous_page_number ">&laquo;</a></li>
    % else %
      <li class="disabled"><span>&laquo;</span></li>
    % endif %
    % for i in contacts.paginator.page_range %
      % if library.number == i %
        <li class="active"><span> i  <span class="sr-only">(current)</span></span></li>
      % else %
        <li><a href="?page= i "> i </a></li>
      % endif %
    % endfor %
    % if contacts.has_next %
      <li><a href="?page= contacts.next_page_number ">&raquo;</a></li>
    % else %
      <li class="disabled"><span>&raquo;</span></li>
    % endif %
  </ul>
% endif %

【问题讨论】:

【参考方案1】:

这行有问题:

return render(request, 'index.html', context, 'filter': contacts_filter)

在这里,您仅将上下文作为filter 传递,而缺少contacts

所以改成

return render(request, 'index.html', context, 'filter': contacts_filter,'contacts': contacts)

【讨论】:

必须更多,因为我仍然没有看到任何分页。 :( 而且我那里确实有超过 5k 个对象。 对……让它工作。应该是:return render(request, 'index.html', context = 'filter': contacts_filter,'contacts': contacts)

以上是关于使用引导程序进行 Django 分页的主要内容,如果未能解决你的问题,请参考以下文章

使用引导程序进行分页的响应式数据表或表

表格分页 [Bootstrap - Django]

Twitter引导表分页

使用 CakePHP 分页助手的引导分页

为啥引导程序不起作用,尽管我已经加载了它等(Django 项目)?

如何在引导程序中使用导航选项卡实现分页?