1. views.py

def app(request):
page_info = PageInfo(request.GET.get('p'), 6, 100, request.path_info, page_range=7)
return render(request, 'index.html', locals())

2. page.py

 class PageInfo(object):
def __init__(self, current_page, per_age_num, all_count, base_url, page_range=11):
"""
:param current_page: 当前页
:param per_age_num: 每页显示数据条数
:param all_count: 数据库总个数
:param base_url: 页码标签的前缀
:param page_range: 页码个数
:return: 列表-->str
"""
try:
current_page = int(current_page)
except Exception as e:
current_page = 1
self.current_page = current_page
self.per_page_num = per_age_num
self.all_count = all_count
a, b = divmod(all_count, per_age_num)
if b != 0:
self.all_page = a + 1
else:
self.all_page = a self.base_url = base_url
self.page_range = page_range def start(self):
return (self.current_page - 1) * self.per_page_num def end(self):
return self.current_page * self.per_page_num def page_str(self):
"""
:return: list --> str
"""
page_list = [] first_page = "<a href='%s?p=%s'>首页</a>" % (self.base_url, 1)
page_list.append(first_page) if self.current_page <= 1:
prev = "<a href='#'>上一页</a>"
else:
prev = "<a href='%s?p=%s'>上一页</a>" % (self.base_url, self.current_page - 1)
page_list.append(prev) # 只有 8页
if self.all_page <= self.page_range:
start = 1
end = self.all_page + 1
else:
# 页数 18
if self.current_page > int(self.page_range / 2):
# 当前页: 100,101,102
if (self.current_page + int(self.page_range / 2)) > self.all_page:
start = self.all_page - self.page_range + 1
end = self.all_page + 1
# 当前页: 6,7,8,9,10
else:
start = self.current_page - int(self.page_range / 2)
end = self.current_page + int(self.page_range / 2) + 1
else:
# 当前页: 1,2,3,4,5,
start = 1
end = self.page_range + 1 for i in range(start, end):
if self.current_page == i:
temp = '<a class="active" href="%s?p=%s">%s</a>' % (
self.base_url, i, i,)
else:
temp = '<a href="%s?p=%s">%s</a>' % (
self.base_url, i, i,)
page_list.append(temp) if self.current_page >= self.all_page:
nex = "<a href='#'>下一页</a>"
else:
nex = "<a href='%s?p=%s'>下一页</a>" % (self.base_url, self.current_page + 1)
page_list.append(nex) last_page = "<a href='%s?p=%s'>尾页</a>" % (self.base_url, self.all_page)
page_list.append(last_page)
return "".join(page_list)

3. index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/css/commons.css" />
</head>
<body> <!-- 1. 自定义分页 -->
<div class="pagination">
{{ page_info.page_str|safe }}
</div> </body>
</html>

4. common.css

/* 分页开始 */
.pagination{
padding: 10px 0;
}
.pagination a{
display: inline-block;
color: #369;
padding: 6px 10px;
text-align: center;
border: 1px solid #e1e1e1;
margin-right: 6px;
text-decoration: none;
}
.pagination a.active{
border: 0;
}
.pagination a:hover{
background-color: #369;
color: #ffffff;
} /* 分页结束 */

django【自定义分页】的更多相关文章

  1. Django自定义分页并保存搜索条件

    Django自定义分页并保存搜索条件 1.自定义分页组件pagination.py import copy class Pagination: def __init__(self, current_p ...

  2. Django自定义分页、bottle、Flask

    一.使用django实现之定义分页 1.自定义分页在django模板语言中,通过a标签实现; 2.前段a标签使用<a href="/user_list/?page=1"> ...

  3. Django 自定义分页类

    分页类代码: class Page(object): ''' 自定义分页类 可以实现Django ORM数据的的分页展示 输出HTML代码: 使用说明: from utils import mypag ...

  4. Django—自定义分页

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...

  5. Django - 自定义分页、FBV和CBV

    一.自定义分页(优势在于能够保存搜索条件) """ 分页组件使用示例: 1) 先取出所有数据USER_LIST 2) 实例化: obj = Pagination(requ ...

  6. Django——自定义分页(可调用)

    1.view from django.shortcuts import render,HttpResponse # Create your views here. from app01.models ...

  7. django 自定义分页,网址存储缓存,CBV

    1. 通过切片控制分页 自定义分页: from django.shortcuts import render # Create your views here. from app01.models i ...

  8. Django自定义分页

    分页 自定义分页 稳扎稳打版 def book(request): # 从URL取参数(访问的页码) page_num = request.GET.get("page") try: ...

  9. django自定义分页控件

    1.准备数据 在models创建测试表 from django.db import models class Host(models.Model): hostname = models.CharFie ...

  10. Django 自定义分页

    1.路由 urls.py url(r'^index2.html/', views.index2), 2.views.py def index2(request): # 数据总条数 当前页 每页显示条数 ...

随机推荐

  1. UVALive 7712 Confusing Manuscript 字典树 查询与s的编辑距离为1的字符串数量

    /** 题目:UVALive 7712 Confusing Manuscript 链接:https://vjudge.net/problem/UVALive-7712 题意:给定n个不同的字符串,f( ...

  2. hdu6005 Pandaland 想法+dijkstra

    /** 题目:hdu6005 Pandaland 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6005 题意:给定一个带权无向图,求权值和最小的环的值,如 ...

  3. 使用inotify+rsync实现服务器间文件同步

      1. rsync 1.1 什么是rsync   rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到 ...

  4. 关于css中层叠性的一点理解

    关于css层叠性的一点理解 标签(空格分隔): html css 我们平时在写css的时候会遇到这样的情况 <!DOCTYPE html> <html lang="en&q ...

  5. easyui 扩展layout的方法,支持动态添加删除块

    $.extend($.fn.layout.methods, { remove: function(jq, region){ return jq.each(function(){ var panel = ...

  6. SmartUI2.0后续声明

    感谢很多朋友关注,因为今年一直在另外一个公司做顾问,网络环境管制相当严格,所以一直没有更新博客. 同时也很抱歉,SmartUI 2.0一直都没有下文.在次声明一下,SmartUI一直都在做,只不过Sm ...

  7. 利用jsonrpc技术包装uiautomator

    昨天一天在网上搜索解决上一篇文章中的exception: monkeyrunner内置uiautomator出错的原因 尽管没找到解决办法.可是让我无意中发现了一个好工具,比sl4a更好用的工具.直接 ...

  8. hadoop入门学习整理

    技术性网站 1.http://dongxicheng.org/ 2.http://www.iteblog.com/ 3.http://www.cnblogs.com/shishanyuan/p/414 ...

  9. java字符串、时间大小比较

    package mytest; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util ...

  10. Jmeter_远程启动 I

    Jmeter 是Java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误. 其实,Jmeter的 ...