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实现第五届蓝桥杯格子放鸡蛋
格子放鸡蛋 X星球的母鸡很聪明.它们把蛋直接下在一个 N * N 的格子中,每个格子只能容纳一枚鸡蛋.它们有个习惯,要求:每行,每列,以及每个斜线上都不能有超过2个鸡蛋.如果要满足这些要求,母鸡最多能 ...
- requireJS模块化
1. JavaScript里面js代码的写法:目标是解决冲突和依赖 函数式编程,全局函数和变量--很容易覆盖 对象的写法--也会从外面改变 命名空间:利用名称不同缓冲js代码的冲突---名称太长,不方 ...
- HTML 5的革新——语义化标签section和article的区别
原文地址:https://stackoverflow.com/questions/33910294/what-is-the-difference-between-article-and-section ...
- TB6612FNG电机驱动模块
TB6612FNG电机驱动模块 模块原理图 模块的使用 TB6612是双驱动,也就是可以驱动两个电机 下面分别是控制两个电机的IO口 STBY口接单片机的IO口清零电机全部停止, 置1通过AIN1 A ...
- VSCode最佳设置
最近在学习Vue,用VSCode开发.经过摸索,VSCode最佳设置. { "eslint.enable": false, "workbench.colorTheme&q ...
- v-bind 缩写
Vue.js 为两个最为常用的指令提供了特别的缩写: <!-- 完整语法 --> <a v-bind:href="url"></a> <! ...
- 前端Javascript效果汇总
1.DOM原生动态加载js <script type="text/javascript"> function loadJs(){ //得到html的头部dom var ...
- 使用redis实现nodejs并发服务
const redisClient = require('redis').createClient(6379, '127.0.0.1'); const crypto = require('crypto ...
- 2019-02-12 html的初步学习
前两天看了下python的爬虫,后面的抓包模拟登录实在是难弄,于是暂时放弃,来学学前端知识QAQ <!DOCTYPE html>文档类型符合HTML5标准 <html lang=&q ...
- Linux nohup命令详解,终端关闭程序依然可以在执行!
大家好,我是良许. 在工作中,我们很经常跑一个很重要的程序,有时候这个程序需要跑好几个小时,甚至需要几天,这个时候如果我们退出终端,或者网络不好连接中断,那么程序就会被中止.而这个情况肯定不是我们想看 ...