Django框架(十四) Django分頁元件

2022-09-05 11:06:13 字數 3356 閱讀 7224

資料量大的話,可以分頁獲取,檢視

例如:圖書管理中,如果有成千上萬本書,要是都在乙個頁面中渲染出來,會影響頁面美觀,所以就要用分頁器分頁渲染

基本寫法

基本寫法:

後端:總資料拿出來

生成分頁器paginator物件(物件裡有屬性和方法)

生成當前頁的物件,current_page=paginator.page(當前頁碼)

取出前台傳過來的頁碼,current_page_num = int(request.get.get('page'))

-需要有異常捕獲

-捕獲到,把當前頁碼設定成第一頁

前端:-for迴圈總頁列表

-點某一頁,跳到指定頁碼,"/index/?page=}">}

# 判斷總頁碼數是否大於11,不大於11,走else:把總頁碼數,賦給page_range(前端迴圈頁碼列表,迴圈的就是page_range)

if paginator.num_pages >11:

# 當前頁碼數-5大於1的時候,page_range應該是,page_range就是1到11頁?

if current_page_num-5<1:

page_range=range(1,12)

elif current_page_num+5>paginator.num_pages:

# 當前頁碼數+5大於總頁碼數,總頁碼-10,到總頁碼+1之間

page_range=range(paginator.num_pages-10,paginator.num_pages+1)

else:

#其他情況,左5,右6推算,也就是:range(current_page_num - 5, current_page_num + 6)

page_range = range(current_page_num - 5, current_page_num + 6)

else:

#小於11,有多少頁,就顯示多少頁

page_range=paginator.page_range

from django.core.paginator import paginator

# 物件引數

1. paginator物件: paginator = paginator(user_list, 10)

# per_page: 每頁顯示條目數量

# count: 資料總個數

count = paginator.count

# num_pages:總頁數,它是乙個物件的方法,通過裝飾器偽裝成物件屬性

page_num = paginator.num_pages

# page_range:總頁數的索引範圍,如: (1,10),(1,200)

pagerange = paginator.page_range

# page: page物件,傳乙個數字,假如你想取到第1頁,就傳1進去,會返回乙個page物件,這個物件裡是當前頁的一些物件

page_obj = paginator.page(1)

2. page物件:page=paginator.page(1)

page.has_next()

page.next_page_number()

page.has_previous()

page.has_previous()

# object_list 分頁之後的資料列表

page.object_list()

# number 當前頁

page.number()

# paginator paginator物件

integrity="sha384-bvyiisifek1dgmjrakycuhahrg32omucww7on3rydg4va+pmstsz/k68vbdejh4u" crossorigin="anonymous">

titletitle>

head>

書名th>

**th>

tr>

thead>

}td>

}td>

tr>

tbody>

table>

a>

li>

a>

li>

}a>li>

}a>li>

}" aria-label="next">#}

a>

li>

a>

li>

ul>

n**>

div>

div>

body>

html>

def index(request):

book_list = models.book.objects.all()

paginator = paginator(book_list, 3)

# 如果頁碼數多,讓它顯示前5,後5,中間是當前在的頁碼

try:

current_page_num = int(request.get.get('page'))

current_page = paginator.page(current_page_num)

print(current_page.object_list)

# 總頁碼數,大於11的時候

if paginator.num_pages >11:

# 當前頁碼數-5大於1的時候,page_range應該是?

if current_page_num-5<1:

page_range=range(1,12)

elif current_page_num+5>paginator.num_pages:

# 當前頁碼數+5大於總頁碼數,總頁碼數往前推11個

page_range=range(paginator.num_pages-10,paginator.num_pages+1)

else:

page_range = range(current_page_num - 5, current_page_num + 6)

else:

#小於11,有多少頁,就顯示多少頁

page_range=paginator.page_range

except exception as e:

current_page_num = 1

current_page = paginator.page(current_page_num)

return render(request, 'index_next.html', locals())

python的django介紹 Django 簡介

django 簡介 自強學堂的django教程將節省你大量的時間,並且使你的web開發充滿樂趣。通過django,你可以建立乙個高效能的web應用而只花費最少的時間和精力。django 中提供了開發 經常用到的模組,常見的 都為你寫好了,通過減少重複的 django 使你能夠專注於 web 應用上有...

django框架學習 三十四 動態生成CSV檔案

csv以純文字形式儲存數字和文字資料的儲存方式,純文字意味著改檔案是乙個字串行,不含必須像二進位制數字那樣的資料。csv檔案由任意數目的記錄組成,記錄間以某種換行符分隔 每條記錄由欄位組成,欄位間的分隔符是其他字元或者字串,最常見的是逗號或製表符,通常,所有記錄都有完全相同的字段序列。要在djang...

Django 框架 Django介紹

django 使用 python 語言寫的開源 web 開發框架,並遵循 mvc 設計。勞倫斯出版集團為了開發以新聞內容為主的 而開發出來了這個框架。django 今年來應用越來越廣泛。django 的主要目的是簡便 快速的開發資料庫驅動的 它強調 復用,多個元件可以很方便的以 外掛程式 形式服務於...