django的分页
一.分页器的函数封装
# 分页计算最小页和最大页
def page_list_return(total, current=1):
'''
分页,返回本次分页的最小页数和最大页数列表
:param total:
:param current:
:return:
'''
min_page = current - 2 if current - 4 > 0 else 1
max_page = current + 4 if current + 4 < total else total
return list(range(min_page, max_page + 1)) # 分页器
def pages(post_objects, request):
'''
分页公共函数,返回分页的对象元组
:param post_objects:
:param request:
:return:
'''
# 分页器
paginator = Paginator(post_objects, 10)
try:
# 本页页码
current_page = int(request.GET.get('page', ''))
except ValueError:
current_page = 1
# 所有页码
page_range = page_list_return(len(paginator.page_range), current_page)
try:
# 本页对象
page_objects = paginator.page(current_page)
except (EmptyPage, InvalidPage):
page_objects = paginator.page(paginator.num_pages) if current_page >= 5:
show_first = 1
else:
show_first = 0
if current_page <= (len(paginator.page_range) - 3):
show_end = 1
else:
show_end = 0
# 所有对象,分页器,本页对象,所有页码,本业页码,是否显示第一页,是否显示最后一页
return post_objects, paginator, page_objects, page_range, current_page, show_first, show_end
二.view页面的传递
def menu_list(request):
header_title, path = '菜单详情', '菜单详情'
menus_list = MenuInfo.objects.all()
menus_list, p, page_obj, page_range, current_page, show_first, show_end = pages(menus, request)
return render(request, 'menu/menu_list.html',locals())
三.前端页面的代码
<div class="col-sm-7">
<div class="dataTables_paginate paging_simple_numbers" id="editable_paginate">
<ul class="pagination">
{% if page_obj.has_previous %}
<li class="paginate_button previous " id="editable_previous">
<a class="page" href="?page={{ page_obj.previous_page_number }}" aria-controls="editable"
data-dt-idx="0"
tabindex="0">上一页</a>
</li> {% else %}
<li class="paginate_button previous disabled" id="editable_previous">
<a class="page" aria-controls="example1" data-dt-idx="0" tabindex="0">上一页</a>
</li>
{% endif %}
{% ifequal show_first 1 %}
<li class="paginate_button">
<a class="page" href="?page=1" aria-controls="editable" data-dt-idx="1" tabindex="0">1..</a>
</li>
{% endifequal %} {% for page in page_range %}
{% ifequal current_page page %}
<li class="paginate_button active">
<a class="page" href="?page={{ page }}" aria-controls="editable" data-dt-idx="1" tabindex="0"
title="第{{ page }}页">{{ page }}</a>
</li>
{% else %}
<li class="paginate_button">
<a class="page" href="?page={{ page }}" aria-controls="editable" data-dt-idx="1" tabindex="0"
title="第{{ page }}页">{{ page }}</a>
</li>
{% endifequal %} {% endfor %}
{% ifequal show_end 1 %}
<li class="paginate_button">
<a class="page" href="?page={{ p.num_pages }}" aria-controls="editable" data-dt-idx="1" tabindex="0"
title="第{{ page }}页">...{{ p.num_pages }}</a>
</li>
{% endifequal %}
{% if page_obj.has_next%}
<li class="paginate_button next " id="editable_next">
<a class="page" href="?page={{ page_obj.next_page_number }}" aria-controls="editable"
data-dt-idx="1"
tabindex="0">下一页</a>
</li>
{% else %}
<li class="paginate_button next disabled " id="editable_next">
<a class="page" aria-controls="editable"
data-dt-idx="1"
tabindex="0">下一页</a>
</li>
{% endif %} </ul>
</div>
</div>
django的分页的更多相关文章
- 第二十一章 Django的分页与cookie
第二十一章 Django的分页与cookie 第一课 模板 1.模板的继承 在Template目录下新建模板master.html <!DOCTYPE html> <html lan ...
- Python Django的分页,Form验证,中间件
本节内容 Django的分页 Form 中间件 1 Django 分页 1.1 Django自带的分页 1.首先来看下我的测试数据环境 ############ models.py ######### ...
- Django----列表分页(使用Django的分页组件)
目的:是为了实现列表分页 1.定制URL http://127.0.0.1:8000/blog/get_article?page=3之前定制URL是在url后增加了/id,这次使用参数的方式 def ...
- Django—自定义分页
分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...
- Django自定义分页并保存搜索条件
Django自定义分页并保存搜索条件 1.自定义分页组件pagination.py import copy class Pagination: def __init__(self, current_p ...
- Django DRF 分页
Django DRF 分页 分页在DRF当中可以一共有三种,可以通过setttings设置,也可也通过自定义设置 PageNumberPagination 使用URL http://127.0.0.1 ...
- django之分页,纯python代码
Django中分页 py文件代码 """ 自定义分页组件 可以返回分页的数据和分页的HTML代码 """ from django.http ...
- django之分页、cookie装饰器
一.分页代码如下 from django.utils.safestring import mark_safe class Page: def __init__(self, current_page, ...
- django的分页--不全也未实现
一.Django内置分页 Paginator 二.自定义分页 分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该在数据库表中的起始位置. 1.设定每页显示数据条数 2.用户输 ...
- Django自定义分页、bottle、Flask
一.使用django实现之定义分页 1.自定义分页在django模板语言中,通过a标签实现; 2.前段a标签使用<a href="/user_list/?page=1"> ...
随机推荐
- Node.js-安装配置【1】-在Windows XP系统配置环境变量
家里有台老古董台式机,安装的是Windows XP系统,摸索了一下,成功的在上面安装配置好了Node.js V4.4.7 一.安装Node.js(过程略) 二.npm配置全局和缓存路径(过程略) 三. ...
- 【转】Java内存管理:深入Java内存区域
转自:http://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html 本文引用自:深入理解Java虚拟机的第2章内容 Java与C++之间有一 ...
- dojo tree edit的使用[前端]
var store = new mydata.JsonRestStore({ target: "<%=ResolveUrl("~/uieditserver.ashx" ...
- React Native开发之npm start加速
在Windows下好不容易安装好React Native环境之后,运行npm start,结果就是无限被等待,快的话160秒(将近3分钟啊....) 而Mac下因为有watchman所以是飞一样的速度 ...
- .NET基础面试题整理
1.什么是.NET?什么是CLI?什么是CLR?IL是什么? (1).net用于代码编译和执行的集成托管环境,换句话,它管理应用程序运行的方方面面,包括首次运行的编译,为程序分配内存存储数据和指令 ...
- 利用JS实现自定义滚动条
一般默认的滚动条会比较丑,我们可以用简单的js实现自定义滚动条的功能: 代码如下: <!doctype html> <html> <head> <meta c ...
- linux常用命令(三)
文件搜索命令 which 命令;可以用于查询某个命令所存在的路径,由此可知道谁可以使用它.附加可以看到命令的别名记录,就是在ls的时候会自动对文件夹上色.前面章节讲过. whereis 命令;可以找到 ...
- Neil·Zou 语录一
1 既然选择了远方 Since I’ve chosen to go far 便只顾风雨兼程 I will just walk down the path I chose step by ste ...
- js日历选择控件
mydate97: http://www.my97.net/dp/demo/index.htm
- windows中查看开机时间
windows中查看开机时间 在windows下可以使用systeminfo命令来查看. 下面是网站摘录的关于windows启动了多长时间的内容 1. windows系统可以查看从开机到现在共 ...