zoukankan      html  css  js  c++  java
  • django中的Paginator分类

    当页面数据过多时我们需要对数据进行分页处理,django中提供了Paginator类进行分页处理。很方便。
    分页作用:提高用户体验;提高应用的速度

    引入:
    from django.core.paginator import Paginator
    
    创建分页对象
    all_articles = models.Article.objects.all().order_by('id')   #获取全部文章数据
    page_obj = Paginator(all_articles,5)  #通过django自带的分页器进行分页 每页5条数据
    
    Paginator对象提供的方法:
    print('文章一共有多少数据',page_obj.count) #文章一共有多少数据
    print('一共分了多少页',page_obj.num_pages)  #返回总页数  一共分了多少页
    print('页码列表',page_obj.page_range)  #页码列表  range对象
    
    数据集提供的方法:
        page_data = page_obj.get_page(2)   #获取第几页的数据集
        print(page_data.has_other_pages())  #是否有上一页或下一页
        print(page_data.has_next())  #是否有下一页
        print(page_data.has_previous()) #是否有上一页
        print(page_data.next_page_number()) #下一页页码值
        print(page_data.previous_page_number())#上一页页码值
        print('起始',page_data.start_index())  #返回当前页起始的对象序号
        print('结束',page_data.end_index()) #返回当前结束页的对象序号
        print(page_data.number)  #当前页
    

    views.py

    def index(request):
        page = request.GET.get('page')
        print('页面传来的参数',page)
        articles = models.Article.objects.all()
        # 创建分页实例, articles是文章所有数据,第二个参数代表每页展示多少条数据
        page_obj = Paginator(articles, 5)
        # print('文章一共有多少数据',page_obj.count) #文章一共有多少数据
        # print('一共分了多少页',page_obj.num_pages)  #返回总页数  一共分了多少页
        # print('页码列表',page_obj.page_range)  #页码列表  range对象
    
    
        # 数据集提供的方法:
        # page_data是某一页的数据集合对象
        page_data = page_obj.get_page(page)   #获取第几页的数据集
        # print(page_data.has_other_pages())  #是否有上一页或下一页
        # print(page_data.has_next())  #是否有下一页
        # print(page_data.has_previous()) #是否有上一页
        # print(page_data.next_page_number()) #下一页页码值
        # print(page_data.previous_page_number())#上一页页码值
        # print('起始',page_data.start_index())  #返回当前页起始的对象序号
        # print('结束',page_data.end_index()) #返回当前结束页的对象序号
        # print(page_data.number)  #当前页
        return render(request,'index.html',{'articles':page_data,'page_obj':page_obj})

    index.html

                    {% if articles.has_other_pages %}
                    <div class="text-center mt-2 mt-sm-1 mt-md-0 mb-3 f-16">
                        {% if articles.has_previous  %}
                            <span class="text-secondary" title="当前页已经是首页"><a href="/articles?page={{articles.previous_page_number}}">上一页</a></span>
                        {% endif%}
                        {% for num in page_obj.page_range %}
                            {% if num == articles.number %}
                                <span class="mx-2" style="background-color: #20c997"><a href="/articles?page={{num}}">{{num}}</a></span>
                            {% else %}
                            <span class="mx-2">{{num}}</span>
                            {% endif %}
                        {% endfor %}
    
                        {% if articles.has_next %}
                        <a class="text-success" href="/articles?page={{articles.next_page_number}}">下一页</a>
                        {% endif %}
    
                    </div>
                    {% endif %}
    

      

  • 相关阅读:
    jq 切换功能toggle
    打开控制台F12弹出弹窗
    CSS解决无空格太长的字母,数字不会自动换行的问题
    微信公众号页面无法唤起输入框
    别人遇到的两条前端面试题
    在HTML打开已安装的App,未安装跳转到对应的下载链接
    promise的使用
    特殊的json对象转数组,最合成新的json数据
    Rem兼容知多少?
    parseInt的结果看不懂,请看我分析
  • 原文地址:https://www.cnblogs.com/liulilitoday/p/13628194.html
Copyright © 2011-2022 走看看