url文件

from django.contrib import admin
from django.conf.urls import url
from app01 import views urlpatterns = [
url(r'^user_list', views.user_list)
]

对views文件

def user_list(request):
pagesizenumber = request.COOKIES.get('pagesizenumber', 10) #获取COOKIE传过来的key('pagesizenumber'), 默认为10
current_number = request.GET.get('p', 1) #获得前端a的?p = 的值,此为当前页码数
one_page_number = 11 #每页显示的页码数
pagefi = pagenation.Page(List, pagesizenumber, current_number, one_page_number) #生成类
(show_page, list_page) = pagefi.page_str() #返回两个参数
return render(request, 'user_list.html', {'show_page' : show_page, 'list_page': list_page})

对于上述的pagenation.Page 中为Page.py 文件

from django.utils.safestring import mark_safe
class Page: def __init__(self, List, pagesizenumber, current_number, one_page_number = 11):
# List 输入传入的数据, pagesizenumber 每页显示的数据量,current_number 当前页码, one_page_number:每页页码数,默认11
self.pagesizenumber = pagesizenumber
self.current_number = current_number
self.one_page_number = one_page_number
self.List = List @property
def page_number(self):
self.one_math_number = int(self.pagesizenumber)
page_number, v = divmod(len(self.List), self.one_math_number) # page_number 总页码数, 计算所需要的总页码数
return page_number
@property
def show_page(self):
self.current_number = int(self.current_number) #当前页码数
self.one_math_number = int(self.pagesizenumber)
page_number, v = divmod(len(self.List), self.one_math_number) #计算得需要的总页码数
if v > 0:
page_number += 1 # 如果大于1, 页码数+1
show_page = self.List[(self.current_number - 1) * self.one_math_number:self.current_number * self.one_math_number] # 显示在页面的数
return show_page def page_str(self):
list_page = []
self.current_number = int(self.current_number)
self.one_math_number = int(self.pagesizenumber)
self.one_page_number = int(self.one_page_number) if self.page_number < self.one_page_number: # 总页码数小于单页页码数
start_page = 1
end_page = int(self.page_number) + 1
else: # 总页码数大于单页码数
if self.current_number <= int((self.one_page_number + 1) / 2): # 当前页码 小于 单页页码数中间
start_page = 1
end_page = int(self.one_page_number) + 1
print(start_page)
print(end_page)
elif self.page_number - int((self.one_page_number - 1) / 2) > self.current_number > int(
(self.one_page_number + 1) / 2): # 当前页码数 大于 单页页码数中间 小于 总页码数-单页页码中间 #开始发生变化
start_page = int(self.current_number - ((self.one_page_number) - 1) / 2)
end_page = int(self.current_number + ((self.one_page_number) + 1) / 2)
else:
start_page = self.page_number - self.one_page_number # 当前页码数大于总页码数-单页页码中间
end_page = self.page_number + 1
# 上一页按钮
if self.current_number == 1:
x = ("<a class='paging active' href='#'>上一页</a>")
else:
x = ("<a class='paging active' href='/user_list/?p=%s'>上一页</a>" % (self.current_number - 1,))
list_page.append(x)
# 添加a标签
for i in range(start_page, end_page):
if i == self.current_number:
x = ("<a class='paging active' href='/user_list/?p=%s'>%s</a>" % (i, i))
else:
x = ("<a class='paging' href='/user_list/?p=%s'>%s</a>" % (i, i)) list_page.append(x)
# 下一页按钮
if self.current_number == self.page_number:
x = ("<a class='paging active' href='#'>下一页</a>")
else:
x = ("<a class='paging active' href='/user_list/?p=%s'>下一页</a>" % (self.current_number + 1,))
list_page.append(x) x = '''
<input type="text"><a onclick = 'jumpTo(this, "/user_list/?p=")';>Go</a>
<script>
function jumpTo(ths, base){
var val = ths.previousSibling.value;
location.href = base + val; }
</script>
'''
# ths.previousSibling.value 找出在其上面的input的value值
# location.href = base + val 跳转
# x = '''
# <input type='text' ><a onclick='jumpTo(this, "/user_list/?p=")';>Go</a>
# <script>
# function jumpTo(ths,base){
# var val = ths.previousSibling.value;
# location.href = base + val;
# }
# </script>
# '''
list_page.append(x) list_page = ''.join(list_page)
print(list_page)
list_page = mark_safe(list_page)
return self.show_page, list_page

对于user_list.html文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.pagination .paging{
padding: 5px;
margin: 5px;
background-color: aqua;
color: white;
}
.pagination .paging.active{
background-color: red;
color: white; }
</style>
</head>
<body>
<ul>
{% for i in show_page %}
<li>{{ i }}</li>
{% endfor %}
</ul>
{# {% for i in list_page %}#}
{# <a class='paging' href="/user_list/?p={{ i }}">{{ i }}</a>#}
{# {% endfor %}#} <div class = pagination>
{{ list_page }}
</div>
{# onchange 检测改变#}
<select id = 'i1' onchange="changePageSize(this)">
<option value="">10</option>
<option value="">30</option>
<option value="">50</option>
<option value="">100</option>
</select>
<script src = '/static/jquery-3.3.1.js'></script>
<script src="/static/jquery.cookie.js"></script>
<script>
{# 文件一进来就执行该操作, 获得pagesizenumber值,改变values, 初始值为10#}
$(function () {
var v = $.cookie('pagesizenumber');
if (v){$('#i1').val(v);}
else{$('#i1').val(10)}
});
function changePageSize(ths) {
var v = $(ths).val();
$.cookie('pagesizenumber', v, {path:'/user_list/'});
location.reload();
{# 刷新实现跳转#} } </script> </body>
</html>

django网页的分页功能,大家如果有疑问请留言的更多相关文章

  1. Django实现简单分页功能

    使用django的第三方模块django-pure-pagination 安装模块: pip install django-pure-pagination 将'pure_pagination'添加到s ...

  2. Django自定制分页功能

    URL: """django_paginner URL Configuration The `urlpatterns` list routes URLs to views ...

  3. django网页图片验证码功能

    在一个正常的登录系统中,验证码是非常重要的,用于识别人机,毕竟我们都知道,这个世界中存在着万恶的爬虫,验证码有很多种方式,有图片的,有邮件的,有短信的,有拼图的,不管什么样的验证码,目的都是验证访问用 ...

  4. 利用rest-framework实现django应用的分页功能

    自定义分页的类,继承 PageNumberPagination class StandardResultsSetPagination(PageNumberPagination): page_size ...

  5. Django 之 Paginator 分页功能

    Django Paginator Django 分页官方文档  https://docs.djangoproject.com/en/1.10/topics/pagination/ 此分页方法没有限制显 ...

  6. 【原】django实现列表分页功能

    在view.py里添加分页查询方法: from django.http import JsonResponse from django.views.decorators.http import req ...

  7. Django,ajax实现表格增删查改,Django内置分页功能。

    1.工程目录 2.urls.py """Django_ajax URL Configuration The `urlpatterns` list routes URLs ...

  8. django内置分页功能扩展

    实现自定制页码数类型class myPaginator(Paginator): def __init__(self,curr_page,per_page_num,*args,**kwargs): se ...

  9. django中如何实现分页功能

    1.在html页面中导入js文件和css文件 <link rel="stylesheet" href="../../../static/css/jquery.pag ...

随机推荐

  1. Java受检异常和不受检异常

    Java异常有checked exception(受检异常)和unchecked exception(不受检异常), 编译器在编译时,对于受检异常必须进行try...catch或throws处理,否则 ...

  2. webdriver常用函数总结

    #1 创建浏览器对象 driver = webdriver.Chrome() #2 设置隐式等待10秒 driver.implicitly_wait(10) #3 最大化浏览器窗口 driver.ma ...

  3. 将 UWP 的有效像素(Effective Pixels)引入 WPF

    在很久很久以前,WPF 诞生之初,有一个神奇的单位,它的名字叫做——设备无关单位(DIP,Device Independent Unit).微软给它描绘了一片美好的愿景——在任何显示器上显示的尺寸是相 ...

  4. iOS应用截屏

    iPhone自从推出后就自带了截屏功能,简单而易用,所以应用就没什么截屏的需求了,不过有些时候我们还是会遇到这个需求.比如,我们开发了一个播放器,用openGL进行video render,此时直接截 ...

  5. 常用的SQL语句大全

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

  6. bzoj1017(JSOI2008)魔兽地图

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1017 钱数很少,所以它也能压进状态里. 还有向上贡献几个物品.所以状态就是第 i 号物品,向 ...

  7. Sublime + python2.7 + opencv (轻量级开发环境)

    工具: 1. Python2.7,安装完成 2. 相应版本的cv2.pyd,放入到…\Python27\Lib\site-packages\下 3. 下载Sublime Text 3,破解它,网上搜个 ...

  8. Java中的三元运算:a = (a > b)?a:b

    格式:逻辑值 ? 表达式1 : 表达式2 执行顺序:先执行逻辑值,如果逻辑值为true,则执行表达式1:反之则执行表达式2 a = (a > b)?a:b 如果a>b成立,返回a: 如果a ...

  9. [Web]网址净化方法

    本文来自:https://meta.appinn.com/t/topic/3130 原理很简单,所以不说了. 用法很简单,先把下面的代码保存为书签(复制到地址里面),在需要的页面里点击一下这个书签就好 ...

  10. ROS HTB限速失败原因分析和需注意事项

    要想做限速,必须要知道以下几点: 首先要知道自己要限制什么的速度,谁的速度,于是需要用的标记,即Mangle. 其次要知道怎么限速,是限制上传,还是下载? 最后要知道所做的限速是否成功,即需要知道如何 ...