資料量大的話,可以分頁獲取,檢視
例如:圖書管理中,如果有成千上萬本書,要是都在乙個頁面中渲染出來,會影響頁面美觀,所以就要用分頁器分頁渲染
基本寫法
基本寫法:
後端:總資料拿出來
生成分頁器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 的主要目的是簡便 快速的開發資料庫驅動的 它強調 復用,多個元件可以很方便的以 外掛程式 形式服務於...