views.py

class AnalysisDataHandler(View):
def get(self, request):
analysis_data = MonitorCenterDataAnalysis.objects.all().order_by('create_time').reverse()
paginator = Paginator(analysis_data, 2) # 每页显示10条数据
num_pages = paginator.num_pages # 总页数
page = request.GET.get('page')
if not page:
page = 1
else:
page = int(page)
#分页方式:以5页为基准
#一:少于5页
#无:页码按钮及左右侧翻页按钮都不存在
#有:左右侧按钮至少存在一个,并且有全部页码按钮
#二:大于等于5页
#左侧、右侧翻页按钮至少一个存在,并且有5页码按钮
try:
analysis_data = paginator.page(page) if num_pages < 5:
page_num_list = [i for i in range(1, num_pages+1)]
elif page in [1, 2, 3]:
page_num_list = [1, 2, 3, 4, 5]
elif page in [num_pages-1, num_pages-2, num_pages]:
page_num_list = [i for i in range(num_pages-4, num_pages+1)]
else:
page_num_list = [i for i in range(page-2, page+3)]
analysis_data.page_num_list = page_num_list
except PageNotAnInteger:
# 如果page不是一个整数,则展示第一页。
analysis_data = paginator.page(1)
except EmptyPage:
# 如果page不在范围内(例如,9999),则展示结果的最后一页。
analysis_data = paginator.page(paginator.num_pages) return render(request, 'flowmgr/analysis_data.html', {'analysis_data': analysis_data})

analysis_data.html

<div style="float: right">
<ul class="pagination">
{% if analysis_data.has_previous %}
<li>
<a href="?page={{ analysis_data.previous_page_number }}" aria-label="上一页">
<span aria-hidden="true">«</span>
</a>
</li>
{% endif %}
{% for index in analysis_data.page_num_list %}
{% if index == analysis_data.number %}
<li class="disabled"><a href="?page={{ index }}">{{ index }}</a></li>
{% else %}
<li class="active"><a href="?page={{ index }}">{{ index }}</a></li>
{% endif %}
{% endfor %}
{% if analysis_data.has_next %}
<li>
<a href="?page={{ analysis_data.next_page_number }}" aria-label="下一页">
<span aria-hidden="true">»</span>
</a>
</li>
{% endif %}
</ul>
</div

  

  

django-分页(非海量数据)的更多相关文章

  1. Django分页的实现

    Django分页的实现 Django ORM  分页介绍 分页是网页浏览中常见到的一种形式,在数据量较大时,一个页面显示不全,采取分割数据由用户选择进行显示的方式. 基本实现 技术点 通过切片得到数据 ...

  2. Django 分页查询并返回jsons数据,中文乱码解决方法

    Django 分页查询并返回jsons数据,中文乱码解决方法 一.引子 Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下: # coding=UTF- ...

  3. django 分页(2) 使用类 页码显示

    django 分页显示页码 views.py 显示11页码 ) < 起始位置 - 10总页数 else 总页数 > IF 当前页 小于 起始位置 结束页 IF 当前页 大于 IF 如果结束 ...

  4. Django 分页功能

    Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...

  5. 原生的 django 分页

    原始的 django 分页 # 基本 写法 class Paginator(object): def __init__(self, object_list, per_page, orphans=0, ...

  6. django 分页组件

      一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...

  7. Django分页(二)

    Django分页(二) 要求 .设定每页显示数据条数 # # .用户输入页码(第一页.第二页...) # # .设定显示多少页号 # # .获取当前数据总条数 # # .根据设定显示多少页号和数据总条 ...

  8. Django分页(一)

    Django分页(一) 手动实现简单分页 HTML <!DOCTYPE html> <html lang="en"> <head> <me ...

  9. django 分页出现 UnorderedObjectListWarning 错误

    django 分页出现此错误: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unorde ...

  10. 2019.03.20 mvt,Django分页

    MVT模式   MVT各部分的功能:   M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理.       V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返 ...

随机推荐

  1. web自动化环境配置

    1.下载chrome浏览器对应版本的驱动 下载地址:https://npm.taobao.org/mirrors/chromedriver 2.下载后将chromedriver放到python安装路径 ...

  2. Windows10怎么用Administrator登录?

    1.首先按下快捷键win+X键, 2.然后在命令提示符中输入命令“net user administrator /active:yes”后回车 3.此时administrator管理员账户已开启,点击 ...

  3. JVM源码分析之警惕存在内存泄漏风险的FinalReference(增强版)

    概述 JAVA对象引用体系除了强引用之外,出于对性能.可扩展性等方面考虑还特地实现了四种其他引用:SoftReference.WeakReference.PhantomReference.FinalR ...

  4. 再谈typedef(重点为函数指针)

    有种很方便的写法. typedef int *p: p pointer: 这时直接把pointer带入原式中,取代p然后去掉typedef,得到的结果就是int * pointer: 哈哈,这样直接替 ...

  5. Dubbo学习系列之十七(微服务Soul网关)

    论起微服务,哪能不谈网关,老将有Zuul,后继有Gateway,但这些都和SpringCloud关系密切,其他网关如Kong,因Lua原因,玩起来略不顺手.这不,就来了个Soul,我顺便拿来整进了我在 ...

  6. Java使用反射实现根据字符串类名及参数创建对象

    要根据字符串创建对象,可以使用 Class.forName(String) 方法: 而要新建一个可以指定初始值参数的对象,就必须得使用 getConstructor(Class<T>... ...

  7. Ubuntu下安装spark

    方法一: jps 查看Java 包 sudo apt-get install openjdk** sudo apt-get install scala 选择安装源然后 sudo wget 下载链接 s ...

  8. [github]添加fork me标识

    下午用python在命令行画超载鸡,累死,以后慢慢再改吧. 偶然见看到别人博客园右上角有github的fork me图标,就找找,自己也弄上. 直接给官方博客地址:地址 复制添加到需要的页面源码中,把 ...

  9. HDU_5602_概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=5602 dp[1][i][j]表示轮到第二个人操作时,第一人总和i,第二人总和j,第一人胜的最小概率(因为每个人都 ...

  10. awk sed 命令

    awk awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行的读入,以 空格或TAB 为默认分隔符 将每行 ...