django-分页(非海量数据)
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-分页(非海量数据)的更多相关文章
- Django分页的实现
Django分页的实现 Django ORM 分页介绍 分页是网页浏览中常见到的一种形式,在数据量较大时,一个页面显示不全,采取分割数据由用户选择进行显示的方式. 基本实现 技术点 通过切片得到数据 ...
- Django 分页查询并返回jsons数据,中文乱码解决方法
Django 分页查询并返回jsons数据,中文乱码解决方法 一.引子 Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下: # coding=UTF- ...
- django 分页(2) 使用类 页码显示
django 分页显示页码 views.py 显示11页码 ) < 起始位置 - 10总页数 else 总页数 > IF 当前页 小于 起始位置 结束页 IF 当前页 大于 IF 如果结束 ...
- Django 分页功能
Django 分页功能比较强大,这边是结合官网的内容写的可以参考 https://docs.djangoproject.com/en/1.9/topics/pagination/ 分页命令行练习案列 ...
- 原生的 django 分页
原始的 django 分页 # 基本 写法 class Paginator(object): def __init__(self, object_list, per_page, orphans=0, ...
- django 分页组件
一.仿django分页功能自己实现 urls.py 1 2 3 4 5 6 7 8 9 from django.conf.urls import url from django.contrib i ...
- Django分页(二)
Django分页(二) 要求 .设定每页显示数据条数 # # .用户输入页码(第一页.第二页...) # # .设定显示多少页号 # # .获取当前数据总条数 # # .根据设定显示多少页号和数据总条 ...
- Django分页(一)
Django分页(一) 手动实现简单分页 HTML <!DOCTYPE html> <html lang="en"> <head> <me ...
- django 分页出现 UnorderedObjectListWarning 错误
django 分页出现此错误: UnorderedObjectListWarning: Pagination may yield inconsistent results with an unorde ...
- 2019.03.20 mvt,Django分页
MVT模式 MVT各部分的功能: M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理. V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返 ...
随机推荐
- web自动化环境配置
1.下载chrome浏览器对应版本的驱动 下载地址:https://npm.taobao.org/mirrors/chromedriver 2.下载后将chromedriver放到python安装路径 ...
- Windows10怎么用Administrator登录?
1.首先按下快捷键win+X键, 2.然后在命令提示符中输入命令“net user administrator /active:yes”后回车 3.此时administrator管理员账户已开启,点击 ...
- JVM源码分析之警惕存在内存泄漏风险的FinalReference(增强版)
概述 JAVA对象引用体系除了强引用之外,出于对性能.可扩展性等方面考虑还特地实现了四种其他引用:SoftReference.WeakReference.PhantomReference.FinalR ...
- 再谈typedef(重点为函数指针)
有种很方便的写法. typedef int *p: p pointer: 这时直接把pointer带入原式中,取代p然后去掉typedef,得到的结果就是int * pointer: 哈哈,这样直接替 ...
- Dubbo学习系列之十七(微服务Soul网关)
论起微服务,哪能不谈网关,老将有Zuul,后继有Gateway,但这些都和SpringCloud关系密切,其他网关如Kong,因Lua原因,玩起来略不顺手.这不,就来了个Soul,我顺便拿来整进了我在 ...
- Java使用反射实现根据字符串类名及参数创建对象
要根据字符串创建对象,可以使用 Class.forName(String) 方法: 而要新建一个可以指定初始值参数的对象,就必须得使用 getConstructor(Class<T>... ...
- Ubuntu下安装spark
方法一: jps 查看Java 包 sudo apt-get install openjdk** sudo apt-get install scala 选择安装源然后 sudo wget 下载链接 s ...
- [github]添加fork me标识
下午用python在命令行画超载鸡,累死,以后慢慢再改吧. 偶然见看到别人博客园右上角有github的fork me图标,就找找,自己也弄上. 直接给官方博客地址:地址 复制添加到需要的页面源码中,把 ...
- HDU_5602_概率dp
http://acm.hdu.edu.cn/showproblem.php?pid=5602 dp[1][i][j]表示轮到第二个人操作时,第一人总和i,第二人总和j,第一人胜的最小概率(因为每个人都 ...
- awk sed 命令
awk awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大. 简单来说awk就是把文件逐行的读入,以 空格或TAB 为默认分隔符 将每行 ...