django 后端分页
分页处理脚本:
# -*- 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 后端分页的更多相关文章
- django项目一 分页器(前端分页和后端分页区别)
1. 客户信息展示 1. 母版和继承 {% extends 'layout'%} {% load static%} {% static '文件路径' %} block css js content 2 ...
- 第二十一章 Django的分页与cookie
第二十一章 Django的分页与cookie 第一课 模板 1.模板的继承 在Template目录下新建模板master.html <!DOCTYPE html> <html lan ...
- Python Django的分页,Form验证,中间件
本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...
- Django后端向前端直接传html语言防止转义的方法(2种)
Django后端向前端直接传html语言防止转义的方法(2种) 目的,为了让前端对后端传输的这种方式不转义 1.使用mark_safe() from django.utils.safestring i ...
- Django----列表分页(使用Django的分页组件)
目的:是为了实现列表分页 1.定制URL http://127.0.0.1:8000/blog/get_article?page=3之前定制URL是在url后增加了/id,这次使用参数的方式 def ...
- bootstrap table 前后端分页(超级简单)
前端分页:数据库查询所有的数据,在前端进行分页 后端分页:每次只查询当前页面加载所需要的那几条数据 下载bootstrap 下载bootstrap table jquery谁都有,不说了 项目结构:T ...
- datatables跳转自定义页面(后端分页)
在后端分页的情况下,怎么做到跳转自定义页面? 0x01 难点: 一. 怎么添加自定义代码? 前提:datatables在整个html加载完毕后,进行datatables数据的渲染,并且把右下角的 “上 ...
- datatables后端分页
0x01 缘由 平时较少涉及前端,这次本以为模板中有表单,分页跳转搜索功能都比较齐全,可以高枕无忧,但是细看模板中的分页跳转是不需要与后台交互的,数据一次性写在前端,再有前端插件完成分页. 这种方式肯 ...
- Django后端彻底解决跨域问题
最近在接一个前后端分离的项目,后端使用的django-restframework,前端使用的Vue.后端跑起来后,发现前端在访问后端API时出了了跨域的问题. 类似如下报错: 关于跨域问题,之前这篇文 ...
随机推荐
- java代码(6) ---guava之multimap
guava之multimap 上一篇说的是Multiset它可以对存入的相同元素做一个计数的功能,那multimap呢? 一.概述 1.基本介绍和案例说明 multimap和Multiset的继承结果 ...
- python—迭代器,生成器与for循环机制
一:什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代器中的下一项,要么就引起一个stoplteration异常,以终止协议(只能往后走不能往前) 2.可迭代对 ...
- keras搭建神经网络快速入门笔记
之前学习了tensorflow2.0的小伙伴可能会遇到一些问题,就是在读论文中的代码和一些实战项目往往使用keras+tensorflow1.0搭建, 所以本次和大家一起分享keras如何搭建神经网络 ...
- 全面概述Gitee和GitHub生成/添加SSH公钥
前言 现如今将代码开源已经成为软件开发行业的一种趋势,而现在比较有名的代码托管平台有GItHub.Gitee.Gitlab等相关平台.而我们在使用代码托管平台最为常见的就是如何将自己本地的代码推送到远 ...
- go 语言中windows Linux 交叉编译
记录一下. 在windows系统编译,然后再Linux系统运行. 在项目目录下运行: 命令: set GOARM=5 set GOARCH=arm set GOOS=linux go build xx ...
- 【JAVA进阶架构师指南】之五:JVM性能调优
前言 首先给大家说声对不起,最近属实太忙了,白天上班,晚上加班,回家还要收拾家里,基本每天做完所有事儿都是凌晨一两点了,没有精力再搞其他的了. 好了,进入正题,让我们来聊聊JVM篇最后一个章节 ...
- TypeError: this.xxx.substring is not a function的解决办法
这是因为已经改变了xxx的值的类型,不再是字符串的话将不会拥有substring函数, 我当时这样写的时候,直接将number类型赋予了this.enter,所以导致了错误. 改为这样之后可以使用su ...
- 从零开始的Spring Boot(5、Spring Boot整合Thymeleaf)
Spring Boot整合Thymeleaf 写在前面 从零开始的Spring Boot(4.Spring Boot整合JSP和Freemarker) https://www.cnblogs.com/ ...
- mapper.xml文件映射配置
一.导入约束 为全局配置文件绑定dtd约束: 1)联网会自动绑定 2)没网的时候[/org/apache/ibatis/builder/xml/mybatis-3-mapper.dtd]:解压myba ...
- WeChair Plus版项目介绍
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 团队名称 WeChair 这个作业要求在哪里 团队作业第一次:团队作业第一次(2) 这个作业的目标 项目介绍,项目修改 作业正文 ...