django【自定义分页】
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【自定义分页】的更多相关文章
- Django自定义分页并保存搜索条件
Django自定义分页并保存搜索条件 1.自定义分页组件pagination.py import copy class Pagination: def __init__(self, current_p ...
- Django自定义分页、bottle、Flask
一.使用django实现之定义分页 1.自定义分页在django模板语言中,通过a标签实现; 2.前段a标签使用<a href="/user_list/?page=1"> ...
- Django 自定义分页类
分页类代码: class Page(object): ''' 自定义分页类 可以实现Django ORM数据的的分页展示 输出HTML代码: 使用说明: from utils import mypag ...
- Django—自定义分页
分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...
- Django - 自定义分页、FBV和CBV
一.自定义分页(优势在于能够保存搜索条件) """ 分页组件使用示例: 1) 先取出所有数据USER_LIST 2) 实例化: obj = Pagination(requ ...
- Django——自定义分页(可调用)
1.view from django.shortcuts import render,HttpResponse # Create your views here. from app01.models ...
- django 自定义分页,网址存储缓存,CBV
1. 通过切片控制分页 自定义分页: from django.shortcuts import render # Create your views here. from app01.models i ...
- Django自定义分页
分页 自定义分页 稳扎稳打版 def book(request): # 从URL取参数(访问的页码) page_num = request.GET.get("page") try: ...
- django自定义分页控件
1.准备数据 在models创建测试表 from django.db import models class Host(models.Model): hostname = models.CharFie ...
- Django 自定义分页
1.路由 urls.py url(r'^index2.html/', views.index2), 2.views.py def index2(request): # 数据总条数 当前页 每页显示条数 ...
随机推荐
- POSTGRESQL 9.1 FATAL: password authentication failed for user "postgres"
1.配置postgreql 可以远程访问: sudo vim /etc/postgresql/9.1/main/postgresql.conf root@ubuntuserver:~# sudo vi ...
- jQuery插件学习笔记
近期在研究jQuery插件,插件编写的目的是给已经有的一系列方法或函数做一个封装,以便在其它地方反复使用,方便后期维护. JQuery除了提供一个简单.有效的方式进行管理元素以及脚本,它还还提供了例外 ...
- How to convert from BufferedImage to JavaFX 2.2 Image
http://blog.idrsolutions.com/2012/11/convert-bufferedimage-to-javafx-image/ ———————————————————————— ...
- Python相对完美的URL拼接函数
首先说下什么叫URL拼接,我们有这么一个HTML片段: <a href="../../a.html">click me</a> 做为一只辛苦的爬虫,我们 ...
- poj 3653(最短路)
题目链接:http://poj.org/problem?id=3653 思路:题目意思很简单,就是二维平面上的图,要求起点到终点的最短路.建图略坑,需要坐标映射,化二维为一维.然后就是Dijkstra ...
- 如何让WPF程序用上MVVM模式
https://msdn.microsoft.com/zh-cn/magazine/dd419663.aspx
- plsql数组、表和对象
--数组DECLARE TYPE test_plsql_varray IS VARRAY(100) OF VARCHAR2(20); temp_varray1 test_PLSQL_VARRAY := ...
- FOJ 1402(dp推规律)
推规律吧 /** 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...
- Spring框架中的AOP技术----注解方式
利用AOP技术注解的方式对功能进行增强 CustomerDao接口 package com.alphajuns.demo1; public interface CustomerDao { public ...
- <pre>标签让<textarea>标签的内容原样输出
当通过<textarea>插数据进数据的库,取出来后都变成一行变成,用这个<pre>标签能原样输入插入时的格式. 当时要对<pre>加一些CSS样式才行啦. 以下为 ...