日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django之快速分页

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的django之快速分页的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。