zoukankan      html  css  js  c++  java
  • Django组件之分页器

    Django组件之分页器

    分页器的使用

        book_list=Book.objects.all()
    
        paginator = Paginator(book_list, 10)
    
        print("count:",paginator.count)           #数据总数
        print("num_pages",paginator.num_pages)    #总页数
        print("page_range",paginator.page_range)  #页码的列表
    
    
    
        page1=paginator.page(1) #第1页的page对象
        for i in page1:         #遍历第1页的所有数据对象
            print(i)
    
        print(page1.object_list) #第1页的所有数据
    
    
        page2=paginator.page(2)
    
        print(page2.has_next())            #是否有下一页
        print(page2.next_page_number())    #下一页的页码
        print(page2.has_previous())        #是否有上一页
        print(page2.previous_page_number()) #上一页的页码
    
    
    
        # 抛错
        #page=paginator.page(12)   # error:EmptyPage
    
        #page=paginator.page("z")   # error:PageNotAnInteger
    
        '''

    实现示例

    views.py
    from django.shortcuts import render,HttpResponse
    
    # Create your views here.
    from app01.models import Book
    from django.core.paginator import Paginator,EmptyPage
    
    
    def index(request):
        """
        创建数据
        book_list=[]
        for i in range(100):
            book_obj=Book(title='book_%s'%i, price=i*i)
            book_list.append(book_obj)
        Book.objects.bulk_create(book_list)
        """
        book_list = Book.objects.all()
        paginator = Paginator(book_list, 3) # 一页显示多少条数据
        try:
    
            print(paginator.count)  # 数据总数
            print(paginator.num_pages)  # 总页数
            print(paginator.page_range)  # 页数range
    
            current_page_num = int(request.GET.get('page'))  # 获取当前的页数
            current_page = paginator.page(current_page_num)  # 得到当前页数的页数对象
            # 对分页码进行分类讨论
         # 处理页码头 和 页码尾部的问题
    if current_page_num-5 <1 : page_range = range(1,12) elif current_page_num+6 > paginator.num_pages: page_range=range(paginator.num_pages-11,paginator.num_pages+1) else: page_range = range(current_page_num-5,current_page_num+6) # 获取第一页数据的两种方法 # print(current_page.object_list) # for i in current_page: # print(i) except EmptyPage: current_page = paginator.page(1) return render(request,'index.html',locals())
    index.html
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"
              integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
              crossorigin="anonymous">
    </head>
    <body>
        {% for book in current_page %}
            <p>{{ book.title }}:{{ book.price }}</p>
        {% endfor %}
    <nav aria-label="Page navigation">
      <ul class="pagination">
      {% if current_page.has_previous %}
        <li>
          <a href="?page={{ current_page.previous_page_number }}" aria-label="Previous">
            <span aria-hidden="true">上一页</span>
          </a>
        </li>
      {% else %}
      <li class="disabled">
          <a href="" aria-label="Previous">
            <span aria-hidden="true">上一页</span>
          </a>
        </li>
      {% endif %}
          {% for item in page_range %}
              {% if item == current_page_num%}
                <li class="active"><a href="?page={{ item }}">{{ item }}</a></li>
              {% else %}
                <li><a href="?page={{ item }}">{{item}}</a></li>
              {% endif %}
          {% endfor %}
        {% if current_page.has_next %}
        <li>
          <a href="?path={{ current_page.next_page_number }}" aria-label="Next">
            <span aria-hidden="true">下一页</span>
          </a>
        </li>
      {% else %}
        <li class="disabled">
          <a href="" aria-label="Next">
            <span aria-hidden="true">下一页</span>
          </a>
        </li>
      {% endif %}
      </ul>
    </nav>
    </body>
    </html>

  • 相关阅读:
    打造基于CentOS7的xfce最简工作环境
    Linux下C程序的编辑,编译和运行以及调试
    修正 XE6 TListView 上方 SearchBok 右边的清除钮显示
    TabControl 显示彩色的图示 (XE6 Firemonkey)
    TSwitch 中文简繁显示支持(XE6 Android)
    改变 TMemo 的背景颜色 (Firemonkey)
    修正 XE5 Android 键盘三个问题
    Delphi 收藏
    展示 Popup 的使用方法
    ListView 下拉更新 (支持 Android)
  • 原文地址:https://www.cnblogs.com/sxy-blog/p/12989675.html
Copyright © 2011-2022 走看看