Django-自定义分页3

封装分页类

class PageInfo(object):
    def __init__(self, cur_page,all_count, per_page,base_url, show_page=11):
        """

        :param cur_page: 当前页码
        :param all_count: 数据库总行数
        :param per_page: 每页显示行数
        """
        try:
            self.cur_page = int(cur_page)
        except Exception as e:
            self.cur_page = 1
        self.per_page = per_page
        div, mod = divmod(all_count, per_page)
        if mod:
            div += 1
        self.all_pager = div
        self.base_url = base_url
        self.show_page = show_page

    def start(self):
        return (self.cur_page - 1) * self.per_page

    def end(self):
        return self.cur_page * self.per_page

    def pager(self):
        # v = '<a href="/app01/custom/?page=1">1</a>'
        # return v
        page_list = []



        # 展示11条,前5后5
        half = self.show_page//2

        # 如果总数据小于11页,展示所有页码
        if self.all_pager <= self.show_page:
            begin =1
            stop = self.all_pager + 1

        else:
            # 如果当前页<=5,用于显示前面11条
            if self.cur_page <= half:
                begin =1
                stop = self.show_page + 1

            # 如果当前页是末页前5页,那展示末页前11条
            elif self.cur_page + half >= self.all_pager:
                begin = self.all_pager - self.show_page + 1
                stop = self.all_pager + 1

            # 中间页码
            else:
                begin = self.cur_page - half
                stop = self.cur_page + half + 1


        # 上一页按钮
        if self.cur_page >1:
            pre ='<li><a href="%s?page=%s">上一页</a></li>' % (self.base_url,self.cur_page-1)
        else:
            pre ='<li><a href="#">上一页</a></li>'

        page_list.append(pre)


        # 中间页码按钮
        for i in range(begin,stop):

            # 当前页码选中效果
            if i == self.cur_page:
                tmp = '<li class="active"><a href="%s?page=%s">%s</a></li>' % (self.base_url,i, i)
            else:
                tmp = '<li><a href="%s?page=%s">%s</a></li>' %(self.base_url,i,i)
            page_list.append(tmp)

        # 下一页按钮
        if self.cur_page <self.all_pager:
            nex ='<li><a href="%s?page=%s">下一页</a></li>' % (self.base_url, self.cur_page+1)
        else:
            nex ='<li><a href="#">下一页</a></li>'

        page_list.append(nex)

        return ''.join(page_list)

视图


from utils.pager import PageInfo
# 自定义分页功能
def custom(req):
    all_count = models.UserInfo.objects.all().count()

    cur_page = req.GET.get('page')
    page_info = PageInfo(cur_page,all_count,10,'/app01/custom/')

    start = page_info.start()
    end = page_info.end()
    user_list = models.UserInfo.objects.all()[start:end]

    return render(req, 'custom.html', {'user_list':user_list, 'page_info':page_inf

模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <link rel="stylesheet" href="/static/plugins/bootstrap-3.3.7-dist/css/bootstrap.css">
</head>
<body>
    <ul>
        {% for user in user_list %}
            <li>{{ user.user }}</li>
        {% endfor %}
    </ul>



    <nav aria-label="Page navigation">
      <ul class="pagination">

    {{ page_info.pager|safe }}


      </ul>
    </nav>


</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值