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时出了了跨域的问题. 类似如下报错: 关于跨域问题,之前这篇文 ...
随机推荐
- AndroidCamera开发学习笔记01
概述 Android框架支持设备的相机拍照和录像功能 可以直接调用系统的Camera应用来拍照或录像 也可以利用Adroid系统提供的API开发Camera应用来实现拍照和录像的功能 注意事项 需要硬 ...
- 修改MSSQL的端口地址_TcpPort_数据库安装工具_连载_2
修改MSSQL的端口地址_TcpPort,可在程序中调用,从而修改TcpPort Use master Go ------------------------------ --1)在注册表中查询 Pi ...
- Quartz.Net系列(四):Quartz五大构件(Scheduler,Job,Trigger,ThreadPool、JobStore)之ThreadPool、JobStore解析
整体示意图: 1.DefaultThreadPool 如果不存在PropertyThreadPoolType,那么就使用DefaultThreadPool var threadPoolTypeStri ...
- 一篇文章搞懂filebeat(ELK)
本文使用的filebeat是7.7.0的版本本文从如下几个方面说明: filebeat是什么,可以用来干嘛 filebeat的原理是怎样的,怎么构成的 filebeat应该怎么玩 一.filebeat ...
- 让人又爱又恨的Lombok,到底该不该用
1 简介 Lombok,印尼的一个岛屿,龙目岛.但在Java的世界里,它是一个方便的类库,能提供很多便利,因此得到许多人的青睐.但也有不少反对声音.这是为什么呢? 之前去龙目岛拍的日落. 2 Lomb ...
- docker-mcr 助您全速下载 dotnet 镜像
2018 年五月之后,微软将后续发布的所有 docker image 都推送到了 MCR (Miscrosoft Container Registry),但在中国大陆,它的速度实在是令人发指,本文将介 ...
- Windows 程序设计(4) MFC-02 基本控件-上
1. Button 按钮控件 1.1.按钮控件的基本使用 新建对话框工程,拖拽按钮控件,添加点击事件响应函数! a.双击模版进行添加: b.事件方式进行添加: button的常见事件类型 void C ...
- WeChair Plus版项目介绍
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 团队名称 WeChair 这个作业要求在哪里 团队作业第一次:团队作业第一次(2) 这个作业的目标 项目介绍,项目修改 作业正文 ...
- Beta冲刺<2/10>
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺--第二天(05.20) 作业正文 如下 其他参考文献 ... B ...
- 从零开始手把手教你使用原生JS+CSS3实现幸运水果机游戏
项目体验地址 免费视频教程 游戏介绍 幸运水果机是一款街机游戏,游戏界面由24个方格拼接成一个正方形,每个方格中都有一个不同的水果图形,方格下都有一个小灯.玩家使用游戏币选择希望押注的目标,按下开始后 ...