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实现第四届蓝桥杯猜灯谜
猜灯谜 题目描述 A 村的元宵节灯会上有一迷题: 请猜谜 * 请猜谜 = 请边赏灯边猜 小明想,一定是每个汉字代表一个数字,不同的汉字代表不同的数字. 请你用计算机按小明的思路算一下,然后提交&quo ...
- java实现第五届蓝桥杯神奇算式
神奇算式 题目描述 由4个不同的数字,组成的一个乘法算式,它们的乘积仍然由这4个数字组成. 比如: 210 x 6 = 1260 8 x 473 = 3784 27 x 81 = 2187 都符合要求 ...
- RPM包管理-yum在线管理
常用yum命令 查询 查询所有可用软件包列表,yum list 搜索所有和关键字相关的软件包,yum search 关键字 安装 yum -y install 包名,其中,-y 表示自动回答yes 升 ...
- PAT 程序运行时间
要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时所耗费的时间.这个时间单位是 clock ...
- .NET Core Session源码探究
前言 随着互联网的兴起,技术的整体架构设计思路有了质的提升,曾经Web开发必不可少的内置对象Session已经被慢慢的遗弃.主要原因有两点,一是Session依赖Cookie存放Session ...
- linux下的mysql目录
/usr/bin 客户端程序和脚本[root@~ bin]# ls mysql*mysql mysqldump mysql_secure_installationmysqladmin mysqldum ...
- 时间序列神器之争:prophet VS lstm
一.需求背景 我们福禄网络致力于为广大用户提供智能化充值服务,包括各类通信充值卡(比如移动.联通.电信的话费及流量充值).游戏类充值卡(比如王者荣耀.吃鸡类点券.AppleStore充值.Q币.斗鱼币 ...
- Lavarel 执行:php artisan migrate时报错
错误如下: 执行:php artisan migrate时报错: [PDOException]SQLSTATE[HY000] [2002] Connection refused 解决办法: 第一步:. ...
- JVM面试题总结
1.介绍下 Java 内存区域(运行时数据区) Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域. JDK 1.8之前主要分为:堆.方法区.虚拟机栈.本地方法栈 ...
- Python实用笔记 (1)字符串与编码
历史:Ascll-Unicode-UTF-8 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符: >>> ord('A') ...