Django 十六 自定義分頁

2022-09-18 12:12:15 字數 3933 閱讀 2413

自定義分頁:功能:

首尾頁跳轉

儲存搜尋條件

#

自定義分頁

#官方推薦,頁碼數為奇數

class

pagenation:

def__init__(self,base_url,current_page_num,total_counts,request,per_page_counts=10,page_number=5,):

''':param base_url: 分頁展示資訊的基礎路徑

:param current_page_num: 當前頁頁碼

:param total_counts: 總的資料量

:param per_page_counts: 每頁展示的資料量

:param page_number: 顯示頁碼數

'''self.base_url =base_url

self.current_page_num =current_page_num

self.total_counts =total_counts

self.per_page_counts =per_page_counts

self.page_number =page_number

self.request =request

try:

self.current_page_num =int(self.current_page_num)

except

exception:

self.current_page_num = 1

if self.current_page_num < 1:

self.current_page_num = 1half_page_range = self.page_number // 2

#計算總頁數

#資料切片依據,起始位置

@property

defstart_num(self):

start_num = (self.current_page_num - 1) *self.per_page_counts

return

start_num

#資料切片依據,終止位置

@property

defend_num(self):

end_num = self.current_page_num *self.per_page_counts

return

end_num

#拼接html標籤

defpage_html(self):

tab_html = ''

tab_html += '

'return tab_html

view code

#

公共客戶資訊展示

@login_required

defcustomers(request):

#獲取使用者選擇的和使用者輸入的搜尋內容,預設為空,不選擇和不輸入get的返回結果為none

choice = request.get.get("

choice

",''

) wd = request.get.get("

wd",''

)

#在查詢時設定成包含的情況contains--->關鍵字

choice = choice + '

__contains'#

預設get第一次請求第一頁

current_page_num = request.get.get('

page

', 1)

ifwd:

#例項化乙個q物件

q =q()

#指定連線條件,預設是and

#q.connector = "or"

#必須是元組,因為只接收乙個引數

##名字中包含wd欄位的所有資訊 qq__contains 66 name__contains 小

#models.customer.objects.filter(name__contains=wd)

customers_obj =models.customer.objects.filter(q)

else

:

#所有銷售為空的,就是公共客戶

customers_obj = models.customer.objects.filter(consultant__isnull=true)

#每頁展示的資料量

page_counts = 5

#頁碼數 page_number = 7

#總資料 total_count =customers_obj.count()

iftotal_count:

#實列化分頁的類

page_obj =page.pagenation(request.path, current_page_num, total_count, request,page_counts, page_number)

#切片:從總數居中每次切出多少條資料展示在頁面上

customers_obj = customers_obj.order_by('

-pk'

)[page_obj.start_num:page_obj.end_num]

ret_html =page_obj.page_html()

return render(request,"

customers.html

",)

else

:

return render(request,"

404.html")

引數

引數

django 自定義分頁

django框架雖然帶有自己的分頁功能,但是樣式不好看,為了做更好看的分頁,需要自定義乙個分頁工具,話不多說擼起袖子就開幹。1.首先先建乙個python檔案叫pager.py 如下 class pagination object page url 翻頁url路由 object list 資料來源列表...

django自定義分頁

django框架雖然帶有自己的分頁功能,但是樣式不好看,為了做更好看的分頁,需要自定義乙個分頁工具,話不多說擼起袖子就開幹。1.首先先建乙個python檔案叫pager.py 如下 class pagination object page url 翻頁url路由 object list 資料來源列表...

django 自定義分頁功能

django自帶的分頁功能有侷限性,只能顯示所有頁碼,不能顯示當前頁的前五和後五頁的頁碼。所有需要自己寫。from django.shortcuts import render class mypaginator def init self,cur page,per page,total,show ...