分页处理脚本:

# -*- coding: utf-8 -*-

# @Time    : 2019-01-22 10:41
# @Author : 小贰
# @FileName: page.py
# @function: 作者比较懒什么都没写 def control(current_page,page_nums): list_size = 5
if page_nums<=list_size:
page_list= list(range(1,page_nums+1))
else:
if (page_nums-list_size)<=list_size:
page_list = list(range(1,page_nums+1))
else:
if (page_nums-current_page)<list_size:
page_list = [1,2,"..."]+list(range(page_nums - 4, page_nums + 1))
else:
if current_page>list_size:
page_list = list(range(current_page-4, current_page + 1)) + ["...", page_nums - 1, page_nums]
else:
page_list = list(range(1, list_size + 1)) + ["...", page_nums - 1, page_nums]
return page_list if __name__ == "__main__":
current_page=120
page_nums=200
print(control(current_page,page_nums))

视图:

class OpsLog(View):
"""操作日志"""
@method_decorator(csrf_exempt)
@method_decorator(login_check)
@method_decorator(perms_check)
def dispatch(self, request, *args, **kwargs):
return super(OpsLog,self).dispatch(request,*args, **kwargs) def get(self,request,page=1):
title = "操作日志"
audit_obj = log_db.OpsLog.objects.all().order_by("-start_time")
pagesize = 13
paginator = Paginator(audit_obj, pagesize)
# 从前端获取当前的页码数,默认为1
# 把当前的页码数转换成整数类型
currentPage = int(page)
page_nums = paginator.num_pages
#获取分页信息
page_list = pg.control(currentPage, page_nums)
try:
audit_list = paginator.page(page) # 获取当前页码的记录
except PageNotAnInteger:
audit_list = paginator.page(1) # 如果用户输入的页码不是整数时,显示第1页的内容
except EmptyPage:
audit_list = paginator.page(paginator.num_pages) return render(request,'log_opslog.html',locals())

url配置:

urlpatterns = [
path("opslog/<int:page>/",views.OpsLog.as_view()),
]

模板:

<div class="text-right" style="margin-top:-30px;padding-right:9%">
<ul class="pagination" id="pager">
<li class="previous"><a href="/log/opslog/1/">首页</a></li>
{#上一页按钮开始#}
{# 如果当前页有上一页#}
{% if audit_list.has_previous %}
{# 当前页的上一页按钮正常使用#}
<li class="previous"><a href="/log/opslog/{{ audit_list.previous_page_number }}/">上一页</a></li>
{% else %}
{# 当前页的不存在上一页时,上一页的按钮不可用#}
<li class="previous disabled"><a href="javascript:;">上一页</a></li>
{% endif %}
{#上一页按钮结束#}
{# 页码开始#}
{% for num in page_list %}
{% if num == currentPage %}
<li class="item active"><a href="/log/opslog/{{ num }}/">{{ num }}</a></li>
{% else %}
<li class="item"><a href="/log/opslog/{{ num }}/">{{ num }}</a></li>
{% endif %}
{% endfor %}
{#页码结束#}
{# 下一页按钮开始#}
{% if audit_list.has_next %}
<li class="next"><a href="/log/opslog/{{ audit_list.next_page_number }}/">下一页</a></li>
{% else %}
<li class="next disabled"><a href="javascript:;">下一页</a></li>
{% endif %}
<li class="previous"><a href="/log/opslog/{{ page_nums }}/">尾页</a></li>
{# 下一页按钮结束#}
</ul>
</div>

效果:

django 后端分页的更多相关文章

  1. django项目一 分页器(前端分页和后端分页区别)

    1. 客户信息展示 1. 母版和继承 {% extends 'layout'%} {% load static%} {% static '文件路径' %} block css js content 2 ...

  2. 第二十一章 Django的分页与cookie

    第二十一章 Django的分页与cookie 第一课 模板 1.模板的继承 在Template目录下新建模板master.html <!DOCTYPE html> <html lan ...

  3. Python Django的分页,Form验证,中间件

    本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...

  4. Django后端向前端直接传html语言防止转义的方法(2种)

    Django后端向前端直接传html语言防止转义的方法(2种) 目的,为了让前端对后端传输的这种方式不转义 1.使用mark_safe() from django.utils.safestring i ...

  5. Django----列表分页(使用Django的分页组件)

    目的:是为了实现列表分页 1.定制URL http://127.0.0.1:8000/blog/get_article?page=3之前定制URL是在url后增加了/id,这次使用参数的方式 def ...

  6. bootstrap table 前后端分页(超级简单)

    前端分页:数据库查询所有的数据,在前端进行分页 后端分页:每次只查询当前页面加载所需要的那几条数据 下载bootstrap 下载bootstrap table jquery谁都有,不说了 项目结构:T ...

  7. datatables跳转自定义页面(后端分页)

    在后端分页的情况下,怎么做到跳转自定义页面? 0x01 难点: 一. 怎么添加自定义代码? 前提:datatables在整个html加载完毕后,进行datatables数据的渲染,并且把右下角的 “上 ...

  8. datatables后端分页

    0x01 缘由 平时较少涉及前端,这次本以为模板中有表单,分页跳转搜索功能都比较齐全,可以高枕无忧,但是细看模板中的分页跳转是不需要与后台交互的,数据一次性写在前端,再有前端插件完成分页. 这种方式肯 ...

  9. Django后端彻底解决跨域问题

    最近在接一个前后端分离的项目,后端使用的django-restframework,前端使用的Vue.后端跑起来后,发现前端在访问后端API时出了了跨域的问题. 类似如下报错: 关于跨域问题,之前这篇文 ...

随机推荐

  1. java代码(11) ---java代码的优化

    java代码的优化 参考了一些Java开发手册有关代码的规范,觉得一段好的代码可以从三个维度去分析.1)性能,2)可扩展性,3)可读性 让我们看看别人是怎么去分析,还有值得我们去学习的地方,也是我正在 ...

  2. vue cli3 创建的项目中eslint 配置 问题的解决

    1--   vue cli3 项目文件结构 2-- 注释问题 在eslintrc.js 文件中,将 '@vue/standard' 注释后重启即可: 3-- 配置 eslint 文件 在 vue-cl ...

  3. iOS-Core Foundation框架到Foundation桥接的三种方式

    温故知新.勤总结,才能生巧!这次总结一下 :Core Foundation框架到Foundation桥接的三种方式 Foundation提供OC的基础类(像NSObject).基本数据类型等. Cor ...

  4. 阻塞队列一——java中的阻塞队列

    目录 阻塞队列简介:介绍阻塞队列的特性与应用场景 java中的阻塞队列:介绍java中实现的供开发者使用的阻塞队列 BlockQueue中方法:介绍阻塞队列的API接口 阻塞队列的实现原理:具体的例子 ...

  5. 小师妹学JavaIO之:MappedByteBuffer多大的文件我都装得下

    目录 简介 虚拟地址空间 详解MappedByteBuffer MapMode MappedByteBuffer的最大值 MappedByteBuffer的使用 MappedByteBuffer要注意 ...

  6. [转] Git caret(^) and tilde(~)

    点击阅读原文 I spent a little bit of time playing with Git today, specifically the way that the ^ (caret) ...

  7. 容器技术之Docker资源限制

    上一篇我们聊到了docker容器的单机编排工具docker-compose的简单使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13121678.html: ...

  8. Zookeeper——基本使用以及应用场景(手写实现分布式锁和rpc框架)

    文章目录 Zookeeper的基本使用 Zookeeper单机部署 Zookeeper集群搭建 JavaAPI的使用 Zookeeper的应用场景 分布式锁的实现 独享锁 可重入锁 实现RPC框架 基 ...

  9. 004.OpenShift命令及故障排查

    一 CLI访问OpenShift资源 1.1 资源操作 OCP将OpenShift集群中的为由主节点管理的对象统称为资源,如:node.service.pod.project.deployment.u ...

  10. Jmeter接口测试,往MySQL数据库写数据时,中文显示???

    调Jmeter接口测试,请求字段输入中文,查看数据库插入情况, 发现数据库显示    ???