django之快速分页

本文介绍djanog两种分页,第一是普通分页,第二是使用haystack全文检索的分页。

1.django自带分页功能,这个功能非常好用。
基本知识点:
Django提供了数据分页的类,这些类被定义在django/core/paginator.py中
对象Paginator用于对列进行一页n条数据的分页运算
对象Page用于表示第m页的数据
Paginator对象

方法init(列表,int):返回分页对象,参数为列表数据,每面数据的条数
属性count:返回对象总数
属性num_pages:返回页面总数
属性page_range:返回页码列表,从1开始,例如[1, 2, 3, 4]
方法page(m):返回Page对象,表示第m页的数据,下标以1开始
Page对象

调用Paginator对象的page()方法返回Page对象,不需要手动构造
属性object_list:返回当前页对象的列表
属性number:返回当前是第几页,从1开始
属性paginator:当前页对应的Paginator对象
方法has_next():如果有下一页返回True
方法has_previous():如果有上一页返回True
方法len():返回当前页面对象的个数
迭代页面对象:访问当前页面中的每个对象
使用示例: 普通页面中使用
views.py文件中创建视图page_test
视图代码:
导入模块


from django.core.paginator import Paginator
from .models import *


def index(request):
index= int(request.GET.get('index','1'))
blog = Post.objects.filter(published_date__isnull=False).order_by('-published_date')
page = Paginator(blog,1) #对搜索出来的结果进行分页,一页显示一条
blog = page.page(index) #获取第index 页的数据,这个需要前端用户点击时传过来
context = {"blog":blog}
return render(request,'blog/index.html',context)


模板分页代码:
备注:
has_previous 判断是否有上一页
previous_page_number 获取上一页的页码
paginator.page_range 获取页码列表如:[1,2,3,4,5]
has_next 判断是否还有下一页
next_page_number 获取下一页页码
paginator.num_pages 获取总页数

<div class="pagenation">

{% if blog.has_previous %}
<a href="/?index={{ blog.previous_page_number }}" class="active">上一页</a>
{% else %}
<a href="/?index=1" class="active">上一页</a>

{% endif %}

{% for pindex in blog.paginator.page_range %}
<a href="?index={{ pindex }}" class="active">{{ pindex }}</a>
{% endfor %}


{% if blog.has_next %}
<a href="/?index={{ blog.next_page_number }}" class="active">下一页</a>
{% else %}
<a href="/?index={{ blog.paginator.num_pages }}" class="active">下一页</a>
{% endif %}

</div>


全文检索中的分页:
django 和haystack 版本:
Django (1.8.7)
django-haystack (2.6.1)

注意:这里指的是已经实现全文检索功能后的分页操作:

在项目目录中配置: 这个配置指的是搜索页一页多少条数据
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 10

 

seach.html 里的配置
备注:
query   搜索关键字,自动传到模板
page_obj 分页后的数据,haystack 自动传到模板
其他方法跟上面的普通页面分页一样使用。

 

<div class="pagenation">

{% if page_obj.has_previous %}
<a href="/search/?q={{ query }}&page={{ page_obj.previous_page_number }}" >上一页</a>
{% else %}
<a href="/search/?q={{ query }}&page=1" >上一页</a>
{% endif %}

{% for pindex in page_obj.paginator.page_range %}
{% if pindex == page.number %}
<a href="#" class="active">{{ pindex }}</a>
{% else %}
<a href="/search/?q={{ query }}&page={{ pindex }}">{{ pindex }}</a>
{% endif %}
{% endfor %}

{% if page_obj.has_next %}
<a href="/search/?q={{ query }}&page={{ page_obj.next_page_number }}" >下一页</a>
{% else %}
<a href="/search/?q={{ query }}&page={{ page_obj.paginator.num_pages }}" >下一页</a>
{% endif %}

</div>

 

转载于:https://www.cnblogs.com/huangguifeng/p/7614622.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/415729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ORA-01033: ORACLE initialization or shutdown in progress

数据库无法连接&#xff0c;提示&#xff1a;ORA-01033: ORACLE initialization or shutdown in progress 现象是这样的&#xff1a; 在我们的测试环境中&#xff0c;一个数据库装了很多个实例&#xff0c;每个实例需要占用一定的内存&#xff0c;当我们有某个实例不需要用的…

node 测试生成模拟用户数据

使用到npm库mockjs&#xff0c;虽然这是一个截止目前两年都不更新的库&#xff0c;但是功能还是可以的。 安装 yarn add mockjs使用 const mock require(mockjs).mock; const nickname mock(cname); console.log(nickname);官方说明文档 http://mockjs.com/examples.html#D…

【codeforces 239B】Easy Tape Programming

【题目链接】:http://codeforces.com/contest/239/problem/B 【题意】 给你一个长度为n的字符串,只包括‘<”>’以及数字0到9; 给你q个区间(n和q都小于等于100) 然后让你在这q个区间里面做一些操作; 有一个指针int,指向当前操作的位置,还有一个方向的int; 表示这个…

sql server 数据库还原

最近有接触到sql server 数据库&#xff0c;项目去外实施回来后&#xff0c;需要为数据库做数据还原&#xff0c;同步数据库测试环境&#xff0c;其实有二种方法。 第一种是把库文件全部拷过来&#xff0c;然后附加上来就可以了&#xff0c;这种方法挺简单。 第二种方法就是备…

Android 通知删除事件监听,截获通知

安卓12广播 if(this.getPackageName() !null){intent.setPackage(this.getPackageName()); } F01AMainActivity.this.sendBroadcast(intent); Intent intentCancel new Intent(getApplicationContext(),NotificationBroadcastReceiver.class); PendingIntent pendingIntentCa…

小程序设置页面背景颜色

首先&#xff0c;我使用的是mpvue开发。样式使用的less&#xff0c;并且全局会定义一套主题。 primary-color : #ff8730; second-color : #F48B4A; background-color :#F3F3F3; second-text-color :#787878;.flex-center-row {display: flex;flex-d…

【UVA 437】The Tower of Babylon(拓扑排序+DP,做法)

【Solution】 接上一篇,在处理有向无环图的最长链问题的时候,可以在做拓扑排序的同时,一边做DP; 设f[i]表示第i个方块作为最上面的最高值; f[y]max(f[y],f[x]h[y]);(x−>y)∈E 这样可以保证,按阶段进行DP,每次在获取f[x]的时候,你可以保证f[x]已经获得了; 最后取max(f[1…

Cass2008 for CAD2006 安装

1、首先安装CAD2006&#xff0c;装完破解&#xff0c;注&#xff1a;默认路径安装。 2、安装Cass2008 for cad2006,装完以后&#xff0c;打补丁1、补丁2 。注&#xff1a;默认路径安装。 3、将haitusoft 、 debug放在D盘根目录下&#xff0c;这个是公司自己开发的&#xff0c…

android Handler Message传递参数,handler子线程和主线程通讯

创建Handler private Handler handler new Handler() {Overridepublic void handleMessage(Message msg) {switch(msg.what){case 1 : String str1 msg.getData().getString("text1");//接受msg传递过来的参数String str2 msg.getData().getString("text2&…

hapi 使用 lab 和 code 进行测试

测试库有很多&#xff0c;我选了lab。 1、安装lab和code yarn add lab code2、创建test文件夹 test文件夹里面的js文件会被跑测试。比如创建index.js。 const { expect } require(code); const Lab require(lab); const lab exports.lab Lab.script();lab.test(returns t…

远程桌面无法连接服务器,启动Terminal Services 服务报1053错误

今天碰到一棘手问题&#xff0c;一上午数据库服务器都无法连接&#xff0c;远程桌面也连不上了&#xff0c;但是可以PING通。项目组的同事一直反映数据库无法连接&#xff0c;耽误工作进度&#xff0c;真急人啊。 跑到机房一看&#xff0c;机器轰轰巨响&#xff0c;进入桌面&a…

【codeforces 534D】Handshakes

【题目链接】:http://codeforces.com/contest/534/problem/D 【题意】 n个人依次进入一个房间; 进进来的人会和房间里面没有组队的人握一次手; (这里的握手只计算主动握手的那个人的握手次数); (任意时刻,任意3个人都能组队)&#xff1b; 给出每个人的握手信息; 问你n个…

lab 常用配置参数 代码片段

1、--leaks 启用内存泄漏检测&#xff0c;并在检测到时向您发出警告 2、代码片段 experiment(getting started with hapi testing,, () > {// 这种写法会跳过测试test(lab considers this test as TOOD and skips it)// 这种写法不会跳过测试test(always succeeding :), (…

android 底部表格布局TableLayout

添加依赖compile com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2aar置于底部布局&#xff08;最外层必须是RelativeLayout&#xff09;<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/a…

Arcgis10安装说明

1、 先安装dotnet framework 3.5 ,必须要装这个才能运行安装程序。 2、 接着安装Arcgis Desktop &#xff0c;只需下一步&#xff0c;下一步执行就好了。完成后&#xff0c;停掉服务。 3、 安装LicenseManager &#xff0c;下一步执行就可以。 4、 接着来破解&…

前端学习(2606):vue简单叙述

第一步 引入 第二步new Vue 第三步 data绑定数据