django内置分页功能扩展
实现自定制页码数类型
class myPaginator(Paginator):
def __init__(self,curr_page,per_page_num,*args,**kwargs):
self.curr_page=int(curr_page)
self.per_page_num=int(per_page_num) super(myPaginator,self).__init__(*args,**kwargs) def page_num(self):
curr_page=self.curr_page #当前页面
full_page=self.num_pages #总页数
per_page_num=self.per_page_num #显示页码数
half_per_page=int(per_page_num/2)
print(curr_page,full_page,per_page_num,half_per_page) if curr_page<=half_per_page:
return range(1,per_page_num+1)
elif curr_page>=(full_page-half_per_page):
return range(full_page-per_page_num,full_page)
else:
return range(curr_page-half_per_page,curr_page+half_per_page)
veiws:--------------------------------------------------------------------------------------
paginator=myPaginator(curr_page,10,root_lst,10)#(当前页码,一页中显示的页码数个数,内容,一页中的内容)
try:
posts=paginator.page(curr_page)
except EmptyPage:
posts=paginator.page(1)
except PageNotAnInteger:
posts=paginator.page(paginator.num_pages)
html:---------------------------------------------------------------------------------------------------
{% for foo in posts.object_list %} #遍历一页中的内容
<li>{{ foo.name }} - {{ foo.age }}</li> #一页中的其中一条内容
{% endfor %}
{% if posts.has_previous %} #当不存在上一页时的处理方法
<a href="/index?p={{ posts.previous_page_number }}">上一页</a>
{% else %}
<a href="#">上一页</a>
{% endif %}
{% for i in posts.paginator.page_num %} #显示的页码
{% if i == posts.number %}
<span style="display: inline-block;width:20px">{{i}}</span>
{% else %}
<a href="/index?p={{i}}" style="display: inline-block;width:20px">{{i}}</a>
{% endif %}
{% endfor %}
{% if posts.has_next %} #当不存在下一页时的处理方法
<a href="/index?p={{ posts.next_page_number }}">下一页</a>
{% else %}
<a href="#">下一页</a>
{% endif %}
django内置分页功能扩展的更多相关文章
- Django,ajax实现表格增删查改,Django内置分页功能。
1.工程目录 2.urls.py """Django_ajax URL Configuration The `urlpatterns` list routes URLs ...
- Django内置分页
一.django内置分页 from django.shortcuts import render from django.core.paginator import Paginator, EmptyP ...
- Django 内置分页的简单使用
1, 文档 https://docs.djangoproject.com/en/1.11.1/topics/pagination/ 2,视图 from django.core.paginator im ...
- Django 内置分页--Paginator类
官方文档 http://python.usyiyi.cn/django/topics/pagination.html 前端方法 http://www.tuicool.com/articles/RniU ...
- django -- 内置分页
urls.py from django.conf.urls import url from conn_oracle import views urlpatterns = [ url(r'^page/' ...
- django的内置分页
本节内容 自定义一个简单的内置分页 Django内置分页 Django内置分页扩展(继承) 自定义内置组件 自定义一个简单的内置分页 先用django自己自定制一个简单的内置分页,大概掌握内置分页的底 ...
- django内置的分页功能
django内置的分页功能 # 先导入需要查询的模型类 from game.models import Score # 导入内置的分页功能 from django.core.paginator imp ...
- Django内置权限扩展案例
当Django的内置权限无法满足需求的时候就自己扩展吧~ 背景介绍 overmind项目使用了Django内置的权限系统,Django内置权限系统基于model层做控制,新的model创建后会默认新建 ...
- Django内置的分页模块
自定义分页 未封装版: 优点:直观 缺点:代码乱,不易维护,可拓展性差 data = [] for i in range(1, 302): tmp = {"id": i, &quo ...
随机推荐
- Semantic Compositionality through Recursive Matrix-Vector Spaces-paper
Semantic Compositionality through Recursive Matrix-Vector Spaces 作者信息:Richard Socher Brody Huval Chr ...
- java中int和String之间的转换
String 转为int int i = Integer.parseInt([String]); int i = Integer.valueOf(my_str).intValue(); int转为St ...
- Restful Service 中 DateTime 在 url 中传递
在C# url 中一旦包特殊字符,请求可能就无法送达.可以使用如下方法,最为便捷. 请求端: beginTime.Value.ToString("yyyyMMddHHmmss") ...
- 第十七章 java8特性
17.java8中Lambda表达式与Stream API的使用 17.1 Lambda 表达式(Lambda Expressions) 1课时 17.2 函数式(Functional)接口 1课时 ...
- PHP-ML机器学习库之安装篇
1.PHP-ML库安装要求:PHP>=7.1 2.切换到项目的跟目录下,使用composer进行安装:composer require php-ai/php-ml 安装完成后的目录如下: 新建测 ...
- 串口接收端verilog代码分析
串口接收端verilog代码分析 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////// ...
- opencv的移植
一.opencv在ARM上的移植 http://www.cnblogs.com/emouse/archive/2013/04/01/2993842.html http://blog.csdn.net/ ...
- Mysql建了索引查询很慢
遇到一个问题,有几个结构一个的查询,表的索引建的也一样,但是有的查询很快,有的却很慢,需要半分钟以上才能执行完. 查看执行计划,并没有什么区别.找了很久原因才发现是主查询和子查询所涉及的表的字符编码不 ...
- TCP TIME_WAIT过多的解决方法
总结: 最合适的解决方案是增加更多的四元组数目,比如,服务器监听端口,或服务器IP,让服务器能容纳足够多的TIME-WAIT状态连接.在我们常见的互联网架构中(NGINX反代跟NGINX,NGINX跟 ...
- ubuntu 更换为mac主题
step1. 安装相关软件包 sudo add-apt-repository ppa:noobslab/themes sudo apt-get update sudo apt-get install ...