# -*- 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. 使用webuploader组件实现大文件分片上传,断点续传

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

  2. Devexpress MVC GridView / CardView (持续更新)

    //获取gridview里面的combo box 显示的文本 //获取某个column在gridview的 index RightGridView.GetColumnByField("Fun ...

  3. Codeforces Round #345 (Div. 2) E. Table Compression 并查集+智商题

    E. Table Compression time limit per test 4 seconds memory limit per test 256 megabytes input standar ...

  4. cpp 实现简易String类

    需求 实现一个String类 自己写的String headers/String.h #ifndef __MYSTRING__ #define __MYSTRING__ #include <st ...

  5. zabbix配置通过远程命令来发送邮件

    1.安装好zabbix后,在/var/log/zabbix可以查看日志. 2.主机通过zabbix-get检查 yum install zabbix-get -y zabbix-get  -s 客户主 ...

  6. Spring Boot教程(二十一)开发Web应用(2)

    在完成配置之后,举一个简单的例子,在快速入门工程的基础上,举一个简单的示例来通过Thymeleaf渲染一个页面. @Controller public class HelloController { ...

  7. 课上作业补交 p526/syscalls1

    P526代码检查: 1 编译运行p524代码,提交运行结果截图 2 MAXLINE的值是多少?提交Ubuntu中查找这个值的命令和结果截图 3 p525 eval 函数中调用的Fork()函数需要什么 ...

  8. LeetCode_509.斐波那契数

    LeetCode-cn_509 509.斐波那契数 斐波那契数,通常用 F(n) 表示,形成的序列称为斐波那契数列.该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和.也就是: F(0) ...

  9. 树链剖分&咕咕咕了好久好久的qtree3

    前言 显然qtree系列都是树链剖分辣 发现自己没有专门整理过树链剖分耶 辣么就把这篇博客魔改成树链剖分好辣(貌似除了树剖也没什么好写的) 正文 废话了辣么多终于开始了 一.树剖怎么写鸭 二.树剖有什 ...

  10. tomcat在45秒内没有启动,启动超时

    在部署的时候出现Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server ...