from django.utils.safestring import mark_safe #mark_safe:安全字串
class
mypage
:def
__init__
(self, page_num, page_num_count, req_path, per_page_num, page_num_show)
: self.page_num = page_num
self.page_num_count = page_num_count
self.req_path = req_path
self.per_page_num = per_page_num # 每頁顯示多少條資料
self.page_num_show = page_num_show # 顯示的頁碼數
# 如果有異常就預設當前頁
try:
self.page_num =
int(self.page_num)
except exception:
self.page_num =
1# 計算有多少頁 如果商不為0頁數就加一 總的頁碼數
a, b =
divmod
(self.page_num_count, self.per_page_num)
if b:
self.page_num_count = a +
1else
: self.page_num_count = a
# 如果小於1就讓他去當前頁,大於總頁數就讓他去最後一頁
if self.page_num <=0:
self.page_num =
1elif self.page_num >= self.page_num_count:
self.page_num = self.page_num_count
# 每頁展示的頁碼數
half_show = self.page_num_show //
2# 2
if self.page_num - half_show <=0:
start_page_num =
1 end_page_num = self.page_num_show +
1elif self.page_num + half_show >= self.page_num_count:
start_page_num = self.page_num_count - self.page_num_show +
1 end_page_num = self.page_num_count +
1else
: start_page_num = self.page_num - half_show # 3
end_page_num = self.page_num + half_show +
1# 7
self.start_page_num = start_page_num
self.end_page_num = end_page_num
# 每頁顯示多少條資料 開始
@property
defstart_data_num
(self)
:return
(self.page_num -1)
* self.per_page_num
# 每頁顯示多少條資料 結束
@property
defend_data_num
(self)
:return self.page_num * self.per_page_num
# 前端頁碼
defpage_html
(self)
: page_num_range =
range
(self.start_page_num, self.end_page_num)
page_html =
''if self.page_num <=1:
page_pre_html = f'''
'''else
: page_next_html = f'''»尾頁
'''page_html += page_next_html
return mark_safe(page_html)
直接拿去用就行…def
index
(request)
:# 當前頁
page_num = request.get.get(
'page'
)# 獲取路徑
req_path = request.path_info
# 計算有多少條資料
all(
).count(
)#settings中封裝的頁碼數和每頁顯示多少條資料
per_page_num = settings.per_page_num # 每頁顯示多少條資料
page_num_show = settings.page_num_show # 顯示的頁碼數
#封裝的分頁元件
page_obj = mypage(page_num,page_num_count,req_path,per_page_num,page_num_show)
page_html = page_obj.page_html(
)# 獲取所有的資料
all(
)[page_obj.start_data_num:page_obj.end_data_num]
return render(request,
'crm/index.html'
,)
django 自定義分頁元件
分頁元件應用 在檢視函式中 queryset models.issues.objects.filter project id project id page object pagination current page request.get.get page all count queryset....
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 資料來源列表...