一.分页器的函数封装

# 分页计算最小页和最大页
def page_list_return(total, current=1):
    '''
    分页,返回本次分页的最小页数和最大页数列表
    :param total:
    :param current:
    :return:
    '''
    min_page = current - 2 if current - 4 > 0 else 1
    max_page = current + 4 if current + 4 < total else total
    return list(range(min_page, max_page + 1))


# 分页器
def pages(post_objects, request):
    '''
    分页公共函数,返回分页的对象元组
    :param post_objects:
    :param request:
    :return:
    '''
    # 分页器
    paginator = Paginator(post_objects, 10)
    try:
        # 本页页码
        current_page = int(request.GET.get('page', '1'))
    except ValueError:
        current_page = 1
    # 所有页码
    page_range = page_list_return(len(paginator.page_range), current_page)
    try:
        # 本页对象
        page_objects = paginator.page(current_page)
    except (EmptyPage, InvalidPage):
        page_objects = paginator.page(paginator.num_pages)

    if current_page >= 5:
        show_first = 1
    else:
        show_first = 0
    if current_page <= (len(paginator.page_range) - 3):
        show_end = 1
    else:
        show_end = 0
    # 所有对象,分页器,本页对象,所有页码,本业页码,是否显示第一页,是否显示最后一页
    return post_objects, paginator, page_objects, page_range, current_page, show_first, show_end
View Code

相关文章:

  • 2021-12-13
  • 2021-12-29
  • 2021-06-03
猜你喜欢
  • 2021-07-30
  • 2021-09-04
  • 2021-07-31
  • 2021-08-16
  • 2021-12-07
相关资源
相似解决方案