# -*- 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. DNS预读取 dns-prefetch 提升页面载入速度

    DNS Prefetch,即DNS预获取,是前端优化的一部分.一般来说,在前端优化中与 DNS 有关的有两点: 一个是减少DNS的请求次数,另一个就是进行DNS预获取 . DNS 作为互联网的基础协议 ...

  2. Redis实战(十五)Redis实现接口调用频率限制

    序言 登录次数 资料

  3. SQL 行转列(列的值不规则的数目)

    --创建一个临时表用来存储数据 create table #tmp_SNValue_Table (FieldName nvarchar(20), [Value] nvarchar(max)) inse ...

  4. The GuidRepresentation for the reader is CSharpLegacy, which requires the binary sub type to be Uuid

    使用客户端链接MongoDb报错 The GuidRepresentation for the reader is CSharpLegacy, which requires the binary su ...

  5. consul windows下搭建

    起源 由于项目在linux部署,但是开发和测试是在windows下的,所以,暂时接触到consul,暂时也不会远程连接,只好在windows下安装consul 过程 去官网下载:https://www ...

  6. promql 常用函数介绍

    Metrics类型 根据不同监控指标之间的差异,Prometheus定义了4中不同的指标类型(metric type):Counter(计数器).Gauge(仪表盘).Histogram(直方图).S ...

  7. python读取文件时遇到非法字符的处理 UnicodeDecodeError: 'gbk' codec can't decode bytes in position

    报错UnicodeDecodeError: 'gbk' codec can't decode bytes in position ipath = 'D:/学习/语料库/SogouC.mini/Samp ...

  8. leetcode 数组 (python)

    1.题目描述 给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数 ...

  9. Jmeter之简单控制器

    在很多情况下,我们 需要将多个请求放置在一起,但是没有逻辑上的操作,这个时候就可以使用简单控制器了. 如 :

  10. Flink组件及特性

    Flink 是一个针对流数据和批数据的分布式处理引擎.它主要是由 Java 代码实现.目前主要还是依靠开源社区的贡献而发展.对 Flink 而言,其所要处理的主要场景就是流数据,批数据只是流数据的一个 ...