Django-博客分页

  • 导入django内置的分页器
    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
  • 定义一个分页器函数
def make_paginator(objects, page, num=1):
    paginator = Paginator(objects, num)
    try:
        object_list = paginator.page(page)
    except PageNotAnInteger:
        object_list = paginator.page(1)
    except EmptyPage:
        object_list = paginator.page(paginator.num_pages)
    return object_list, paginator
  • 在index中将文章总数和当前访问页码传入分页器函数
def index(request):
    entries = models.Entry.objects.all()
    page = request.GET.get('page', 1)
    entry_list, paginator = make_paginator(entries, page)
    page_data = pagination_data(paginator, page)
    return render(request, 'blog/index.html', locals())
  • 在index模板中写入代码
                {%  if entry_list.has_previous %}
                    
  • 前一页
  • {% endif %} {% if first %}
  • 1
  • {% endif %} {% if left %} {% if left_has_more %} ... {% endif %} {% for i in left %}
  • {{ i }}
  • {% endfor %} {% endif %}
  • {{ entry_list.number }}
  • {% if right %} {% for i in right %}
  • {{ i }}
  • {% endfor %} {% if right_has_more %} ... {% endif %} {% endif %} {% if last %}
  • {{ entry_list.num_pages }}
  • {% endif %} {% if entry_list.has_next %}
  • 下一页
  • {% endif %}

    你可能感兴趣的:(Django-博客分页)