zoukankan      html  css  js  c++  java
  • Django中分页器的使用

    方法一:使用Django自带的分页器

    1. 后端

        from django.core.paginator import Paginator

        paginator = Paginator(skus, 1) # 创建一个对象,参数依次为所要展示对象的列表,每页展示的数量
        pages_num = paginator.num_pages
        

            try:  # 判断前端传来的字符串是否是整数,是就转为整形,不是就默认改成1
                page = int(page)
            except Exception as e:
                page = 1
    
         # 如果前端传来的页数大于网页总页数,跳转成第一页 if page > pages_num: page = 1 # 判断总页数是否小于要展示的固定页数 if pages_num < 5: pages = range(1, pages_num+1) # 判断前三页 elif page <= 3: pages = range(1, 6) # 判断后三页 elif pages_num - page <= 2: pages = range(pages_num-4, pages_num+1) else: pages = range(page-2, page+3) cur_page = paginator.page(page) # 获取当前页的对象,这里包含当前页需要展示在前端的所有东西,用于在前端展示

    2. 前端

    // 里面的?sort={{ sort }}是让其保持上一次的筛选条件,要写在反向解析之外
    <div class="pagenation">
              
    {% if cur_page.has_previous %} // cur_page为上述传来的要展示的对象,方法has_previous判断该页是否有上一页,与下面的has_next用法是一样的 <a href="{% url 'goods:list' type.id cur_page.previous_page_number %}?sort={{ sort }}">上一页</a> {% endif %} {% for page in pages %} {% if page == cur_page.number %} // 如果是当前展示的页面,就让其active <a href="" class="active">{{ page }}</a> {% else %} <a href="{% url 'goods:list' type.id page %}?sort={{ sort }}">{{ page }}</a> {% endif %} {% endfor %} {% if cur_page.has_next %} <a href="{% url 'goods:list' type.id cur_page.next_page_number %}?sort={{ sort }}">下一页></a> {% endif %} </div>

    方法二:自定义分页器

    参考:https://www.cnblogs.com/xiaoyuanqujing/articles/12208376.html



  • 相关阅读:
    用于创建和管理 Azure 虚拟机的常用 PowerShell 命令
    在 Azure Resource Manager 中为虚拟机设置密钥保管库
    使用 Azure 资源管理器向 Windows VM 应用策略
    Azure 门户中基于角色的访问控制入门
    为 Azure Resource Manager 中的虚拟机设置 WinRM 访问权限
    如何加密 Windows VM 上的虚拟磁盘
    适用于 Windows VM 的 Azure 示例基础结构演练
    Azure 中虚拟机的备份和还原选项
    1.1 基本算法和记号
    tomcat的class加载的优先顺序
  • 原文地址:https://www.cnblogs.com/JackShi/p/12800836.html
Copyright © 2011-2022 走看看