美文网首页
Django-12-分页

Django-12-分页

作者: 西海岸虎皮猫大人 | 来源:发表于2020-04-07 20:15 被阅读0次

1.原生分页

使用切片的方式,获得总记录数,根据总记录数计算总结果数,对结果记录进行切片处理

def page(num, size=20):
    # 接收当前页码数
    num = int(num)
    # 总记录数
    totalRecods = Movie.objects.count()
    # 总页数
    totalPages = int(math.ceil(totalRecods*1.0/size))
    # 判断是否越界
    if num<1:
        num = 1
    if num>totalPages:
        num = totalPages
    # 计算每页显示的记录
    movies = Movie.objects.all()[((num-1)*size):(num*size)]
    return movies, num



def index_view(request):
    # 接收分页参数
    num = request.GET.get('num', 1)
    movies, n = page(num)
    return render(request, 'index01.html', {'movies':movies, 'num': n})

2.使用paginator进行分页

视图
def pagen(num):
    n = int(num)
    movies = Movie.objects.all()
    paginator = Paginator(movies, 20)
    try:
        t_per_page = paginator.page(n)  # 获取当前页码的记录
    except PageNotAnInteger:  # 如果用户输入的页码不是整数时,显示第1页的内容
        t_per_page = paginator.page(1)
    except EmptyPage:  # 如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容
        t_per_page = paginator.page(paginator.num_pages)

    # 开始页码,当前页减5
    begin = (n - int(math.ceil(10.0 / 2)))
    # 如果为负则从第一页开始
    if begin < 1:
        begin = 1

    # 结束页码,开始页加9
    end = begin + 9
    # 如果大于总页数则等于最后一页
    if end > paginator.num_pages:
        end = paginator.num_pages

    if end <= 10:
        begin = 1
    else:
        begin = end - 9

    page_list = range(begin, end + 1)
    return paginator, t_per_page, page_list, n
页面
def pagen(num):
    n = int(num)
    movies = Movie.objects.all()
    paginator = Paginator(movies, 20)
    try:
        t_per_page = paginator.page(n)  # 获取当前页码的记录
    except PageNotAnInteger:  # 如果用户输入的页码不是整数时,显示第1页的内容
        t_per_page = paginator.page(1)
    except EmptyPage:  # 如果用户输入的页数不在系统的页码列表中时,显示最后一页的内容
        t_per_page = paginator.page(paginator.num_pages)

    # 开始页码,当前页减5
    begin = (n - int(math.ceil(10.0 / 2)))
    # 如果为负则从第一页开始
    if begin < 1:
        begin = 1

    # 结束页码,开始页加9
    end = begin + 9
    # 如果大于总页数则等于最后一页
    if end > paginator.num_pages:
        end = paginator.num_pages

    if end <= 10:
        begin = 1
    else:
        begin = end - 9

    page_list = range(begin, end + 1)
    return paginator, t_per_page, page_list, n

相关文章

  • Django-12-分页

    1.原生分页 使用切片的方式,获得总记录数,根据总记录数计算总结果数,对结果记录进行切片处理 2.使用pagina...

  • MyBatis之分页

    五、分页 目录:使用Limit分页、RowBounds分页、分页插件 1.使用Limit分页 语法: 使用MyBa...

  • JS的分页算法

    分页的总页数算法 分页算法 分页存储过程或者页面分页中的分页算法: int pagesize // 每页记录数 i...

  • WEB页面中几种常见的分页样式

    这里谈谈WEB页面中几种常见的分页样式 分页样式一:滚动翻页image 分页样式二:常规分页image 分页样式三...

  • 目录【Java分页(前台+后台)】

    SubList分页-001-分页概述 SubList分页-002-需求 SubList分页-003-中文处理 Su...

  • SSM框架-实现Mybatis分页功能-foreknow_cms

    分页处理 分页1、前台分页2、数据库(后台)分页3、存储过程 Orade (Rownum) Mysql(lim...

  • 2018-10-10:分页

    分页 真分页使用特定的sql语句,条件查询出指定内容 假分页数据全部取出,在页面分页显示 分页数据pageSize...

  • Springboot 分页

    //分页返回类 @ApiModel(value ="分页内容", description ="分页数据返回内容")...

  • 分页SQL

    分页 rownum,rowid 分页SQL

  • Java Web 之分页技术

    本文包括:1、分页技术概述2、实现分页3、完善分业——分页工具条4、几种常见的分页工具条 1、分页技术概述 物理分...

网友评论

      本文标题:Django-12-分页

      本文链接:https://www.haomeiwen.com/subject/yftrphtx.html