自定義分頁:功能:
首尾頁跳轉
儲存搜尋條件
#view code自定義分頁
#官方推薦,頁碼數為奇數
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
#引數公共客戶資訊展示
@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 ...