美文网首页
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-分页

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