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提供了一个新的类来帮助管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。本文将分三步介绍Django Paginator 分页的实现步骤 一、通过模型创建Subject Django ...
总的来说,Django的Paginator分页功能非常强大,但是当需要处理原生SQL查询时,需要自定义类来实现必要的方法。通过这种方式,我们可以在保持灵活性的同时,充分利用Django内置的分页机制,提高代码的可复用性和维护...
Django之Paginator分页模块+layui表格(精简版) 上一篇也分享了一个关于Paginator+layui的ajax动态加载数据的博客,只是用到了layui静态表格、样式,功能上是根据自己思路用jQuery动态加载数据的博客分享,说白了上一...
1.Django 搜索结果分页的实现 在这里我们用django自带的分页模块来实现 这个paginator对象中带有如下属性: #per_page:每页显示条目数量 #count:数据总个数 #num_pages:总页数 #page_range:总页数的索引范围,如...
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 时间戳分页器 为什么我们需要这个? 经典分页 (?page=2) 不能与主动更新的列表页面一起正常工作。 例子: 想象一个人们上传宠物照片的网页。 任何人都可以随时上传图片,它会被列出。 最新图片出现在页面...
在Django中,实现分页主要依赖于`django.core.paginator`模块。这个模块提供了`Paginator`类,可以将数据集分成一系列的小页面。通过传递查询集(queryset)和每页显示的项目数量,我们可以轻松地创建分页对象,并...
在Django中,通过`django.core.paginator`模块中的`Paginator`类可以很方便地实现分页功能。 接下来,返回json数据是指将后端处理的数据以JSON格式返回给前端,这样前端可以使用JavaScript等技术方便地处理这些数据...
总之,Django分页器是处理大量数据的有效工具,`django-pure-pagination`作为Django的一个第三方库,提供了一种简单易用的方式来实现分页功能。通过以上步骤,你可以快速地在你的Django项目中集成并使用这个库,提升...
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 分页器paginator 下面的所有方法: book_list=Book.objects.all() paginator = Paginator(book_list, 10) #实例化出一个对象 print...
### Django框架实现的简单分页功能详解 #### 一、引言 在Web应用开发过程中,随着数据库中存储的数据量逐渐增大,为了提高用户体验及页面加载速度,分页功能成为了必不可少的一部分。本篇文章将详细介绍如何在...
总之,Django的`Paginator`类提供了一种优雅且高效的方式来实现分页功能,使得在Web应用程序中处理大量数据变得更加简单和直观。通过灵活地配置每页的项目数量,以及处理异常情况,你可以确保用户能够轻松地导航和...
`django_paginator2` 是一个用于Django框架的第三方库,专门用于增强和优化默认的分页功能。 Django是Python的一个流行Web开发框架,它提供了内置的分页工具`django.core.paginator`,但有时开发人员可能需要更高级...
总的来说,Django的`Paginator`插件使得在项目中实现分页功能变得非常直观和高效。它减少了开发者编写复杂逻辑的时间,使得我们可以专注于更重要的业务逻辑和用户体验设计。在实际开发中,可以根据需求调整每页显示...
- 对于大量数据,考虑使用缓存或数据库级别的分页功能来进一步优化。 - 当用户直接访问非法页码时,确保你的视图能正确处理这种情况,避免返回404错误。 在Django项目`my_project`中,你可能已经创建了一个类似...
作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步...分页功能由 Django 内置的 Paginator 类提供,这个类位于 django.core.paginator 模块,需要使用它时,只需在适当的地方导入这个类即可: from django.