三步实现Django Paginator分页的方法
作者:宜信技术学院 发布时间:2022-09-22 20:15:31
标签:Django,Paginator,分页
Django提供了一个新的类来帮助管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。本文将分三步介绍Django Paginator 分页的实现步骤
一、通过模型创建Subject
Django models
from django.db import models
class Subject(models.Model):
"""学科""”
no = models.AutoField(primary_key=True, verbose_name="编号")
name = models.CharField(max_length=31, verbose_name="名称")
intro = models.CharField(max_length=511, verbose_name="介绍")
def __str__(self):
return self.name
class Meta:
db_table = 'tb_subject'
verbose_name_plural = "学科"
二、通过view模块,要呈现到前端的数据
Django view 的配置
from django.shortcuts import render
from django.core.paginator import Paginator, InvalidPage, EmptyPage, PageNotAnInteger
from vote.models import Subject
def show_subject(request):
"""查询学科"""
#查询Subject 表的所有数据
subjects = Subject.objects.all().order_by("no”)
#使用Paginator模块对数据分页,一页5条数据
paginator = Paginator(subjects, 5)
#使用request.GET.get()函数获取uri中的page参数的数值
page = request.GET.get('page')
try:
#通过获取上面的page参数,查询此page是否为整数并且是否可用
subject_obj = paginator.page(page)
except PageNotAnInteger:
subject_obj = paginator.page(1)
except (EmptyPage, InvalidPage):
subject_obj = paginator.page(paginator.num_pages)
return render(request, "vote/subject.html", {'subject_list': subject_obj})
三、将view中的数据渲染到前端模版上
前端分页代码块:
<div class="pull-right" style="margin-right: 480px;margin-top: 0px”>
<!— 分页功能-->
<nav>
<ul class="pagination”>
<!— 分页功能前端的方向箭头代码-->
{% if subject_list.has_previous %}
<li class="enabled">
<a href="?page={{ subject_list.previous_page_number }}" rel="external nofollow" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
{% endif %}
<!— 分页功能显示页码的中间部分代码-->
{% for page_num in subject_list.paginator.page_range %}
{% if page_num == subject_list.number %}
<li class="active">
<a href="#" rel="external nofollow" >
{{ page_num }}
<span class="sr-only">(current)</span>
</a>
</li>
{% else %}
<li>
<a href="?page={{ page_num }}" rel="external nofollow" >{{ page_num }}
<span class="sr-only">(current)</span>
</a>
</li>
{% endif %}
{% endfor %}
<!— 分页功能末端的方向箭头代码-->
{% if subject_list.has_next %}
<li class="enabled">
<a href="?page={{ subject_list.next_page_number }}" rel="external nofollow" aria-label="last">
<span aria-hidden="true">»</span>
</a>
</li>
{% endif %}
</ul>
</nav>
</div>
四、最终显示效果
来源:https://segmentfault.com/a/1190000019441086


猜你喜欢
- 我想从列表中取出一部分拿来使用,可以创建切片,指定需要使用的第一个元素和最后一个元素的索引使用例子,说明切片的使用#创建一个数字列表,代表我
- 最近终于找到一个好的方法,使用Python的OpenCV模块识别滑动验证码的缺口,可以将滑动验证码中的缺口识别出来了。 测试使用如
- 一、什么是super1.super也是一个类,是的。他不是一个方法也不是一个内置的关键字。class A: pas
- 什么是 JScript?JScript 是由微软开发的活动脚本语言,基于 ECMAScript 规范实现。Internet Explorer
- []*int是一个指向指针的切片,本质上是切片,只不过切片里面存放的元素是指针;*[]int是一个指向切片的指针,本质上是指针,可以用*来获
- Python 功能真的很强,强大到让人吃惊,它能做的事囊括爬虫、数据分析、数据可视化、游戏等等各方面,这些功能在实际的使用中应用广泛,开发程
- 队、栈和链表一样,在数据结构中非常基础一种数据结构,同样他们也有各种各样、五花八门的变形和实现方式。但不管他们形式上怎么变,队和栈都有其不变
- 本文主要介绍了python中读取和查看图片的6种方法,分享给大家,具体如下:file_name1='test_imgs/spect/
- 下载tensorflow的代码地址:https://github.com/tensorflow/models.git然后进入目录:cd mo
- 在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子:#! encoding=UTF-8 class A:
- 1. 加载数据集这次我们搭建一个小小的多层线性网络对糖尿病的病例进行分类首先先导入需要的库文件先来看看我们的数据集观察可以发现,前八列是我们
- 想到TDE(Transparent Data Encryption)。 TDE MSDN 说明: “透明数据加密”(TDE) 可对数据和日志
- 最近遇到一个SQL Server服务器响应极度缓慢,并且出现客户端请求报错的情况,在数据库中的errorlog中出现磁盘请求超过15s才完成
- 前言最近在回答问答python区的问题的时候,发现很多人对于这个break和continue分不清。所以,今天我就写篇文章来讲一下(绝对不是
- 原来sql还有个stuff的函数,很强悍。 一个列的格式是单引号后面跟着4位的数字,比如'0003,'0120,'4
- 将数据库中的数据保存在excel文件中有很多种方法,这里主要介绍pyExcelerator的使用。一、前期准备(不详细介绍MySQL)pyt
- Python中支持Convex Optimization(凸规划)的模块为CVXOPT,其安装方式为:pip install cvxopt一
- Anaconda下需要使用Python与MySQL数据库进行交互,所以需要import一个mysql-python的包,但是在ipython
- 一、Python中global与nonlocal 声明如下代码a = 10 def foo(): a = 100执行foo() 结果 a
- 本文章来为各位介绍一个python的例子,这个就是bootstrap+flask写登录页面的例子,希望文章能够对各位有所帮助。Flask是一