`
wcxt2012
  • 浏览: 23647 次
  • 性别: Icon_minigender_1
  • 来自: 甘肃
社区版块
存档分类
最新评论

django paginator 分页功能

阅读更多

django 自带了一个分页的功能 ,使用起来很方便 。下面是使用方法 :


views.py
def index(request):
    context  =  {}
    article = Article.objects.all()
    page = request.GET.get('page',1)
    context = get_paginator(article,page)
    return render(request, 'home/index.html',context)

为了让主函数不要过于复杂,将分页器的功能分离出来了。

 

分页的主代码 :


from django.core.paginator import Paginator,InvalidPage,EmptyPage,PageNotAnInteger

def get_paginator(obj,page):
    page_size = 10 #每页显示的数量
    after_range_num = 5
    before_range_num = 6
    context = {}
    try:
        page = int(page)
        if page <1 :
            page = 1
    except ValueError:
        page = 1
    paginator = Paginator(obj,page_size)
    try:
        obj = paginator.page(page)
    except(EmptyPage,InvalidPage,PageNotAnInteger):
        obj = paginator.page(1)
   
    if page >= after_range_num:
        page_range = paginator.page_range[page-after_range_num:page+before_range_num]
    else:
        page_range = paginator.page_range[0:int(page)+before_range_num]
   
    context["page_objects"]=obj
    context["page_range"]=page_range
    return context templates 中如下实现:


    <div id="content">
        <div id="mainbar">
            {% for article in page_objects.object_list %}
            <div class="node_article">
                <h3><a href='{% url home.views.index %}'>{{article.subject}}</a></h3>
                <p>{{article.content|safe|escape}}</p>
            </div>
            {%endfor%}
            <div>
                <p class="page_container">
                {% if page_objects.has_previous %}
                <a href="?page={{ page_objects.previous_page_number }}" title="Pre">{% trans "next page"%}</a> {% endif %}
                {% for p in page_range %}
                    {% ifequal p page_objects.number %}
                        <span style="font-size:16px;" title="当前页"><b>{{p}}</b></span>       
                        {% else %}<a href="?page={{p}}" title="第{{p}}页">{{p}}</a>{% endifequal %}
                {% endfor %}    
                {% if page_objects.has_next %}
                <a href="?page={{ page_objects.next_page_number }}" title="Next">{% trans "next page"%}</a>
                {% endif %} 
                <b>
                    {%if page_objects.paginator.num_pages%} {{ page_objects.paginator.num_pages }}{% trans "page"%}{%endif%}
                </b>
                </p>
            </div>
        </div>
    </div>

 

分享到:
评论

相关推荐

    三步实现Django Paginator分页的方法

    Django提供了一个新的类来帮助管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。本文将分三步介绍Django Paginator 分页的实现步骤 一、通过模型创建Subject Django ...

    Django原生sql也能使用Paginator分页的示例代码

    总的来说,Django的Paginator分页功能非常强大,但是当需要处理原生SQL查询时,需要自定义类来实现必要的方法。通过这种方式,我们可以在保持灵活性的同时,充分利用Django内置的分页机制,提高代码的可复用性和维护...

    Django+Paginator模块+LayUi实现分页(精简版)

    Django之Paginator分页模块+layui表格(精简版) 上一篇也分享了一个关于Paginator+layui的ajax动态加载数据的博客,只是用到了layui静态表格、样式,功能上是根据自己思路用jQuery动态加载数据的博客分享,说白了上一...

    Django 搜索结果分页的实现 以及点击下一页搜索条件丢失可能的原因分析

    1.Django 搜索结果分页的实现 在这里我们用django自带的分页模块来实现 这个paginator对象中带有如下属性: #per_page:每页显示条目数量 #count:数据总个数 #num_pages:总页数 #page_range:总页数的索引范围,如...

    django的分页器Paginator 从django中导入类

    from django.db import models # Create your models here. class Book(models.Model): name = models.CharField(max_length=32) price = models.DecimalField(max_digits=5,decimal_places=2) 然后执行python ...

    django-timestamp-paginator:Django 时间戳分页器

    Django 时间戳分页器 为什么我们需要这个? 经典分页 (?page=2) 不能与主动更新的列表页面一起正常工作。 例子: 想象一个人们上传宠物照片的网页。 任何人都可以随时上传图片,它会被列出。 最新图片出现在页面...

    Django结合Bootstrap完美实现分页效果

    在Django中,实现分页主要依赖于`django.core.paginator`模块。这个模块提供了`Paginator`类,可以将数据集分成一系列的小页面。通过传递查询集(queryset)和每页显示的项目数量,我们可以轻松地创建分页对象,并...

    Django分页查询并返回jsons数据(中文乱码解决方法)

    在Django中,通过`django.core.paginator`模块中的`Paginator`类可以很方便地实现分页功能。 接下来,返回json数据是指将后端处理的数据以JSON格式返回给前端,这样前端可以使用JavaScript等技术方便地处理这些数据...

    Django分页器代码

    总之,Django分页器是处理大量数据的有效工具,`django-pure-pagination`作为Django的一个第三方库,提供了一种简单易用的方式来实现分页功能。通过以上步骤,你可以快速地在你的Django项目中集成并使用这个库,提升...

    Django的分页器实例(paginator)

    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 分页器paginator 下面的所有方法: book_list=Book.objects.all() paginator = Paginator(book_list, 10) #实例化出一个对象 print...

    Django框架实现的简单分页功能示例

    ### Django框架实现的简单分页功能详解 #### 一、引言 在Web应用开发过程中,随着数据库中存储的数据量逐渐增大,为了提高用户体验及页面加载速度,分页功能成为了必不可少的一部分。本篇文章将详细介绍如何在...

    Django实现分页功能

    总之,Django的`Paginator`类提供了一种优雅且高效的方式来实现分页功能,使得在Web应用程序中处理大量数据变得更加简单和直观。通过灵活地配置每页的项目数量,以及处理异常情况,你可以确保用户能够轻松地导航和...

    Python库 | django_paginator2-1.0.4-py2.py3-none-any.whl

    `django_paginator2` 是一个用于Django框架的第三方库,专门用于增强和优化默认的分页功能。 Django是Python的一个流行Web开发框架,它提供了内置的分页工具`django.core.paginator`,但有时开发人员可能需要更高级...

    Django使用paginator插件实现翻页功能的实例

    总的来说,Django的`Paginator`插件使得在项目中实现分页功能变得非常直观和高效。它减少了开发者编写复杂逻辑的时间,使得我们可以专注于更重要的业务逻辑和用户体验设计。在实际开发中,可以根据需求调整每页显示...

    Django 分页处理.zip

    - 对于大量数据,考虑使用缓存或数据库级别的分页功能来进一步优化。 - 当用户直接访问非法页码时,确保你的视图能正确处理这种情况,避免返回404错误。 在Django项目`my_project`中,你可能已经创建了一个类似...

    通过 Django Pagination 实现简单分页功能

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步...分页功能由 Django 内置的 Paginator 类提供,这个类位于 django.core.paginator 模块,需要使用它时,只需在适当的地方导入这个类即可: from django.

Global site tag (gtag.js) - Google Analytics