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 ...
随机推荐
- Python3学习笔记(四):序列
一.序列概览 Python 包含6 种内建的序列:列表,元组,字符串,Unicode字符串,buffer对象和xrange对象.这里重点讨论最常用的两种类型:列表和元组. 列表与元组的主要区别在于: ...
- box-shadow inset
安卓支持,ios不支持:box-shadow: 0px 0px 2px inset rgba(0,0,0,0.08); 安卓,ios都支持:box-shadow: inset 0px 0px 2px ...
- SettingBar的点击事件拦截
接下来我们再来看另外一个案例,正如上面界面上显示的两个条目,车辆选择和始发地点选择,他们都有一个共同的特点就是都有共同的标题,内容和右剪头按钮,这种情况下我们都会把它封装成一个组合的自定义View来显 ...
- python之正则匹配match:search findall
match:从开头位置匹配,只匹配一次,开头匹配不上,则不继续匹配 a,b,\w+ match(a,"abcdef") 匹配a >>> re.match(&quo ...
- m3u8直播测试地址
调试m3u8的时候需要测试地址 找了几个,备用一下 安徽卫视 http://stream2.ahtv.cn/ahws/cd/live.m3u8经济生活 http://stream2.ahtv.cn/j ...
- 将项目发布到neuxs私服
需要在 pom.xml中配置 <distributionManagement> <repository> <id>user-release</id> & ...
- 1、maven的下载,安装,配置
下载 1.maven官方下载地址: http://maven.apache.org/download.cgi 进入官网: 下载各历史版本官方地址: https://archive.apache.org ...
- 前端必须掌握的 docker 技能(3)
概述 作为一个前端,我觉得必须要学会使用 docker 干下面几件事: 部署前端应用 部署 nginx 给部署的 nginx 加上 https 使用 docker compose 进行部署 给 ngi ...
- robotframework之常用系统关键字
常用系统关键字此处做些记录,后续根据实际应用陆续补充 1.变量声明 ${a} Set Variable hello 2.表单嵌套 Select Frame Xpath=//* [@] Unselect ...
- apicloud 运费计算js+页面
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...