zoukankan      html  css  js  c++  java
  • django分页器

    1.实例化产生一个分页器对象

    # 两个参数:object_list:对象列表, per_page:每页显示的条数
    paginator=Paginator(book_list,10)
    

    2.对象内的属性

    #数据总条数
    paginator.count
    # 总页数
    paginator.num_pages
    # 页码数的列表
    paginator.page_range
    # 取到第 x 页 ,返回一个Page对象
    current_page=paginator.page(5)
    # 当前页码内所有的数据
    current_page.object_list
    # 是否有下一页
    current_page.has_next()
    # 是否有上一页
    print(current_page.has_previous())
    # 下一页页码数
    current_page.next_page_number()
    # 上一页的页码数
    print(current_page.previous_page_number())
    

    3.一个简单的含有分页器的页面

    前端页面

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.css">
        {% load static %}
        <script src="{% static 'jquery-3.3.1.js' %}"></script>
        <script src="{% get_static_prefix %}bootstrap-3.3.7-dist/js/bootstrap.js"></script>
        <title>分页图书</title>
    
    </head>
    <body>
    <div class="row">
        <div class="col-md-6 col-md-offset-3">
            <table class="table table-hover">
                <thead>
                <tr>
                    <th>id</th>
                    <th>书名</th>
                    <th>价格</th>
                </tr>
                </thead>
                <tbody>
                {% for book in page_content %}
                    <tr>
                        <td>{{ book.id }}</td>
                        <td>{{ book.name }}</td>
                        <td>{{ book.price }}</td>
                    </tr>
                {% endfor %}
                </tbody>
            </table>
            <nav aria-label="Page navigation">
                <ul class="pagination">
                    <li>
                        <a href="?page=1" aria-label="Previous">
                            <span aria-hidden="true">首页</span>
                        </a>
                    </li>
                    {% if page_content.has_previous %}
                        <li>
                            <a href="?page={{ page_content.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 page in page_count %}
                        {% if page_num == page %}
                            <li class="active"><a href="?page={{ page }}">{{ page }}</a></li>
                        {% else %}
                            <li><a href="?page={{ page }}">{{ page }}</a></li>
                        {% endif %}
    
                    {% endfor %}
    
    
                    {% if page_content.has_next %}
                        <li>
                            <a href="?page={{ page_content.next_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 %}
                </ul>
            </nav>
        </div>
    </div>
    </body>
    </html>
    

    后台页面

    from django.shortcuts import render
    from app01 import models
    from django.core.paginator import Paginator
    
    
    # Create your views here.
    
    def book(request):
        # book_li = []
        # for i in range(100):
        #     book_li.append(models.Book(name='book%s'%i,price=10+i))
        # models.Book.objects.bulk_create(book_li)
        if request.method == 'GET':
            books = models.Book.objects.all()
            paginator = Paginator(books, 5)
            try:
                if int(request.GET.get('page')) not in range(1, paginator.num_pages + 1):
                    page_num = 1
            except Exception as e:
                page_num = 1
            else:
                page_num = int(request.GET.get('page'))
            page_content = paginator.page(page_num)
            if  paginator.num_pages<11:
                page_count = paginator.page_range
            else:
                if page_num-5<1:
                    page_count = range(1,12)
                elif page_num+6>paginator.num_pages:
                    page_count = range(paginator.num_pages-10,paginator.num_pages+1)
                else:
                    page_count = range(page_num-5,page_num+6)
    
        return render(request, 'book.html', locals())
    
  • 相关阅读:
    zend studio常见问题解答
    瀑布流插件(jquery.masonry.js)
    仿jQuery中undelegate()方法功能的函数
    Linux 常用命令
    linux debugfs 找回rm 的文件
    jq 添加和移除样式
    CentOS 搭建 nginx python django web server
    Linux vim 配置文件
    CentOS 安装python 3.3.2
    login.defs和shadow文件区别
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9991416.html
Copyright © 2011-2022 走看看