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. javascript不同类型数据之间的运算是如何转换的

    js中不同类型的基础数据之间可以转换,这种转换是有规则可寻的,并非随意的随机的.在js中有5种基础类型数据:string.number.boolean.null.undefined,其中,常用于计算或 ...

  2. C0301 代码块{}的使用,重定向, 从文件中读取行

    #!/bin/bash # 从 /etc/fstab 中读行 File=/etc/fstab {     read line1     read line2 } < $File # {}代码块, ...

  3. 使用AllocConsole()添加调试用控制台

    AllocConsole 函数 为调用进程分配一个新的控制台. 使用步骤: 1. AllocConsole(); //分配控制台 2. HANDLE  g_hOutput=GetStdHandle( ...

  4. 04 Java图形化界面设计——布局管理器之BorderLayout(边界布局)

    边界布局管理器把容器的的布局分为五个位置:CENTER.EAST.WEST.NORTH.SOUTH.依次对应为:上北(NORTH).下南(SOUTH).左西(WEST).右东(EAST),中(CENT ...

  5. Oracle安装完成后,如何用命令行启动和关闭数据库?

    Oracle安装完成后,如何用命令行启动和关闭数据库? 解答: 打开:STARTUP [FORCE] [RESTRICT] [PFILE= filename] [OPEN [RECOVER][ dat ...

  6. js json ie不支持json

    JSON是包含在JScript 5.8中,而为了向下兼容ie8只有在文档模式是”Internet Explorer 8 Standards”的时候才使用JScripte 5.8,其他时候使用JScri ...

  7. PatternSyntaxException:Syntax error in regexp pattern

    Caused by: java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 1:      ...

  8. iOS7中弹簧式列表的制作

    本文转载至 http://www.devdiv.com/forum.php?mod=viewthread&tid=208170&extra=page%3D1%26filter%3Dty ...

  9. UIImagePickerController在UIPopoverController中 旋屏问题

    1弧度=180/π度1度=π/180弧度今天遇到了 一个问题.UIImagePickerController在UIPopoverController中 旋屏问题. 在查找了许多资料后方知,此乃iOS系 ...

  10. 68、 FragmentPagerAdapter+ViewPager实现Tab

    <LinearLayout *** <android.support.v4.view.ViewPager android:id="@+id/id_viewpager" ...