Django与bootstrap分页

时间:2017-04-23 17:47:53

标签: django twitter-bootstrap django-templates django-views

我准备在我的联系人列表中添加一个分页。我整天坐在那里,不知道我混淆了什么。重要的是我确实有一个工作过滤器 - 所以我可以缩小列表范围。但是根据我的理解,分页无论如何都应该有效。在我的情况下,我什么也看不见,所以我的猜测首先是“如果”失败。 如果你能指出我正确的方向。 最好的问候。

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 个答案:

答案 0 :(得分:0)

这一行的问题:

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

此处您仅将上下文传递为filter且缺少contacts

所以将此更改为

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