django前端分页小组件
# -*- 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前端分页小组件的更多相关文章
- django项目一 分页器(前端分页和后端分页区别)
1. 客户信息展示 1. 母版和继承 {% extends 'layout'%} {% load static%} {% static '文件路径' %} block css js content 2 ...
- Django----列表分页(使用Django的分页组件)
目的:是为了实现列表分页 1.定制URL http://127.0.0.1:8000/blog/get_article?page=3之前定制URL是在url后增加了/id,这次使用参数的方式 def ...
- drf-jwt手动签发与校验,drf小组件:过滤、筛选、排序、分页
复习 """ 频率组件:限制接口的访问频率 源码分析:初始化方法.判断是否有权限方法.计数等待时间方法 自定义频率组件: class MyThrottle(SimpleR ...
- drf_jwt手动签发与校验-drf小组件:过滤-筛选-排序-分页
签发token 源码的入口:完成token签发的view类里面封装的方法. 源码中在请求token的时候只有post请求方法,主要分析一下源码中的post方法的实现. settings源码: 总结: ...
- Django中使用JS通过DataTable实现表格前端分页,每页显示页数,搜索等功能
Django架构中自带了后端分页的技术,通过Paginator进行分页,前端点击按钮提交后台进行页面切换. 优缺点:后端分页对于数据量大的场景有其优势,但页面切换比较慢. 后端分页python3代码如 ...
- python2.0_day19_前端分页功能的实现
我们前面完成的客户纪录展示,只有4条,如果有上百条就不能在1页中全部展示了,那样是不人性化的.另外一次性取出来,数据量也比较大.假如现在有95条数据,我们想实现一个每页展示20条,那就分为5页.假如我 ...
- Django基础之forms组件中的ModelForm组件
Django的model form组件 这是一个神奇的组件,通过名字我们可以看出来,这个组件的功能就是把model和form组合起来,先来一个简单的例子来看一下这个东西怎么用:比如我们的数据库中有这样 ...
- Django框架 之 modelform组件
Django框架 之 modelform组件 浏览目录 创建mldelform 添加记录 编辑记录 Django框架中的modelform组件 通过名字我们可以看出来,这个组件的功能就是把model和 ...
- DRF之Jwt 实现自定义和DRF小组件及django-filter插件的使用
一.DRF之Jwt 实现自定义 二.DRF(过滤,排序,分页)组件 三.Django-filter插件的使用和自定义 """ 1.drf-jwt手动签发与校验 :只是做t ...
随机推荐
- wannalfy 挑战赛7 F Masha与老鼠(贪心+dp)
链接:https://www.nowcoder.net/acm/contest/56/F 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 6 ...
- 使用node.js搭建本地服务器
第一步安装node:https://nodejs.org/zh-cn/download/ 接下来就需要安装http的镜像文件 打开cmd:输入以下命令 npm install http-server ...
- 读取hibernate.cfg.xml文件
new Configuration().configure().buildSessionFactory() new Configuration()默认是读取hibernate.properties 所 ...
- shell脚本之浮点数和整数计算
整数计算 直接使用放括号计算即可,省去*号需要使用转义符的麻烦 #!/bin/bash num1= num2= var1=$[ $num1 * $num2 ] echo "$var1&quo ...
- java执行命令行,以及解决卡死问题
java可以执行本地命令行,但是有一个坑,命令执行后,已经执行完毕,但是卡死不返回,这是因为: 命令会返回两个输出流,正确的返回流,和错误的返回流 一般程序的做法是先循环读正确的返回流,再读错误的返回 ...
- 转 实例具体解释DJANGO的 SELECT_RELATED 和 PREFETCH_RELATED 函数对 QUERYSET 查询的优化(二)
https://blog.csdn.net/cugbabybear/article/details/38342793 这是本系列的第二篇,内容是 prefetch_related() 函数的用途.实现 ...
- PostgreSQL 实现按月按年,按日统计 分组统计
endtime 是 timestamp select to_char(endtime, 'YYYY-MM-DD') as d , count(objectid) FROM sde.polygon wh ...
- Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
原文出处: https://blog.csdn.net/hyunbar/article/details/80111947 运行 supervisord -c /etc/supervisor/super ...
- Vue知识整理16:单文件组件
过程较为复杂,这里直接写出视频地址,可以直接查看 https://learning.dcloud.io/#/?vid=14
- 关于maven项目 启动页面报错 The type java.io.ObjectInputStream cannot be resolved.
这种情况,要修改jdk版本,默认jdk选择 jdk不选jre windows---->perference---->java----->installes jres-----> ...