# -*- coding:utf-8 -*-
from django.utils.safestring import mark_safe class Page(object): def __init__(self,curpage,all_count,page_tag=10,tagnum=7):
self.curpage = int(curpage)
self.all_count = int(all_count)
self.page_tag = int(page_tag)
self.tagnum = int(tagnum) @property
def start(self):
return (self.curpage - 1) * self.page_tag
@property
def end(self):
return self.curpage * self.page_tag def page_str(self,url):
count, y = divmod(self.all_count, self.page_tag)
if y:
count += 1
page_list = []
if count < self.tagnum:
start_index = 1
end_index = count + 1
else:
if self.curpage < (self.tagnum / 2) + 1:
start_index = 1
end_index = self.tagnum + 1
else:
start_index = self.curpage - ((self.tagnum - 1) / 2)
end_index = self.curpage + ((self.tagnum - 1) / 2) + 1
if (self.curpage + ((self.tagnum - 1) / 2) + 1) > count:
start_index = count - self.tagnum + 1
end_index = count + 1
if self.curpage == 1:
pre_str = '''<li><a aria-label = "Previous" href="javascript:void(0)">
<span aria-hidden = "true"> 上一页 </span></a></li>'''
else:
pre_str = '''<li><a aria-label = "Previous" href="%s?p=%s&page_on_num=%s">
<span aria-hidden = "true"> 上一页 </span></a></li>''' % (url,
self.curpage - 1, self.page_tag)
page_list.append(pre_str)
for i in range(int(start_index), int(end_index)):
if i == self.curpage:
pre_str = '<li class ="active"> <a href="%s?p=%s&page_on_num=%s"> %s </a> </li>' % (url, i, self.page_tag, i)
else:
pre_str = '<li> <a href="%s?p=%s&page_on_num=%s"> %s </a> </li>' % (url, i, self.page_tag, i)
page_list.append(pre_str)
if len(page_list) == 1:
pre_str = '<li class ="active"> <a href="javascript:void(0)"> 1 </a> </li>'
page_list.append(pre_str)
if self.curpage == count:
pre_str = '''<li><a aria-label = "Next" href="javascript:void(0)">
<span aria-hidden = "true"> 下一页 </span></a></li>'''
else:
pre_str = '''<li><a aria-label = "Next" href="%s?p=%s&page_on_num=%s">
<span aria-hidden = "true"> 下一页 </span></a></li>'''% (url,
self.curpage + 1, self.page_tag)
page_list.append(pre_str)
pake_str = ''.join(page_list)
return mark_safe(pake_str)

  前端写法:

<nav aria-label="Page navigation" class="text-center">
<ul class="pagination">
{{ pake_str}}
</ul>
</nav>
设置每页个数:
<div>
<select id ="page_on_num" name="page_on_num" >
{% for row in page_tag_list %}
{% if row == page_tag %}
<option value="{{ row }}" selected="selected">每页{{ row }}个</option>
{% else %}
<option value="{{ row }}">每页{{ row }}个</option>
{% endif %}
{% endfor %}
</select>
</div>
<div><input id="pagenumtest" type="text">
<input type="button" value="跳转" id="pagenum" tagnum="{{ page_tag }}">
<script type="text/javascript" src="/static/plugins/jquery/jquery.min.js"></script>
<script>
$('#page_on_num').change(function () {
var row = $(this).val();
var urlstr = '/backend/pagelist?p=1&page_on_num='+row;
location.href=urlstr
});
$("#pagenum").click(function () {
var row = $("#pagenumtest").val();
var tag = $("#pagenum").attr('tagnum');
console.log(tag)
var urlstr = '/backend/pagelist?p='+row+'&page_on_num='+tag;
location.href=urlstr
})
</script>

  

django前端分页小组件的更多相关文章

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

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

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

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

  3. drf-jwt手动签发与校验,drf小组件:过滤、筛选、排序、分页

    复习 """ 频率组件:限制接口的访问频率 源码分析:初始化方法.判断是否有权限方法.计数等待时间方法 自定义频率组件: class MyThrottle(SimpleR ...

  4. drf_jwt手动签发与校验-drf小组件:过滤-筛选-排序-分页

    签发token 源码的入口:完成token签发的view类里面封装的方法. 源码中在请求token的时候只有post请求方法,主要分析一下源码中的post方法的实现. settings源码: 总结: ...

  5. Django中使用JS通过DataTable实现表格前端分页,每页显示页数,搜索等功能

    Django架构中自带了后端分页的技术,通过Paginator进行分页,前端点击按钮提交后台进行页面切换. 优缺点:后端分页对于数据量大的场景有其优势,但页面切换比较慢. 后端分页python3代码如 ...

  6. python2.0_day19_前端分页功能的实现

    我们前面完成的客户纪录展示,只有4条,如果有上百条就不能在1页中全部展示了,那样是不人性化的.另外一次性取出来,数据量也比较大.假如现在有95条数据,我们想实现一个每页展示20条,那就分为5页.假如我 ...

  7. Django基础之forms组件中的ModelForm组件

    Django的model form组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样 ...

  8. Django框架 之 modelform组件

    Django框架 之 modelform组件 浏览目录 创建mldelform 添加记录 编辑记录 Django框架中的modelform组件 通过名字我们可以看出来,这个组件的功能就是把model和 ...

  9. DRF之Jwt 实现自定义和DRF小组件及django-filter插件的使用

    一.DRF之Jwt 实现自定义 二.DRF(过滤,排序,分页)组件 三.Django-filter插件的使用和自定义 """ 1.drf-jwt手动签发与校验 :只是做t ...

随机推荐

  1. SQLite为何要用C语言来开发?

    SQLite 选择 C 语言的理由是?为什么不选择 Go 或者 Rust? C 语言是最好的 SQLite 在 2000 年 5 月 29 日发布,并一直使用 C 语言实现.C 语言一直是实现 SQL ...

  2. dell笔记本 win10 下安装 ubuntu16.04 踩坑记录

    硬件配置情况: dell笔记本-灵越-5577 —— I5七代(带有集显),8G内存条DDR4,GTX1050,128G固态硬盘,1T机械硬盘. 固态硬盘划分为3部分,100GB给win10的C盘,1 ...

  3. Vue.js 使用 Font Awesome 小图标

    1.安装 Font Awesome npm i --save @fortawesome/fontawesome-svg-core npm i --save @fortawesome/free-soli ...

  4. Spring Data Jpa (二)JPA基础查询

    介绍Spring Data Common里面的公用基本方法 (1)Spring Data Common的Repository Repository位于Spring Data Common的lib里面, ...

  5. Oracle--表有LONG类型复制或导数报ORA00990

    SYS@racdb1> create table siebel.S_ORG_EXT_201707101650 as select * from siebel.S_ORG_EXT where 1= ...

  6. android系统时间格式转换工具类

    代码依旧非常简单,只不过因为这个方法极为常用,因此体现的还是封装的思想. package com.ctbri.weather.utils; import java.text.SimpleDateFor ...

  7. php 的路由简介 (一个简单的路由模式)

    <?php $_SERVER['REQUEST_URI'] = '/post/edit/1024?foo=bar'; $uri = explode('/', parse_url($_SERVER ...

  8. jQuery file upload callback options

    autoUpload By default, files added to the widget are uploaded as soon as the user clicks on the star ...

  9. Linux 下ThinkPHP项目出现_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Admin/0dfec61edd66f450033aa87c28a760f4.php

    在Linux中部署了ThinkPHP项目,访问时却出现了_STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Admin/0dfec61edd66f450 ...

  10. tomcat打开失败原因

    我重装系统以后,tomcat无法打开,原因是有的项目的虚拟路径有误 到server.xml下修改虚拟路径