Python學習第163天(分頁初步實現)

2022-02-24 23:41:53 字數 2309 閱讀 6978

先說一下自行實現分頁是如何進行的

然後是關於django自帶的分頁內容,這裡主要集中了兩個類,分別是paginator、page

paginator可以通過內建的page方法生成page物件,反之page類也可以這樣操作

from

django.shortcuts import render

from

django.core.paginator import paginator, emptypage, pagenotaninteger

l =for i in range(999

):def index(request):

current_page = request.get.get('p'

) paginator = paginator(l, 10

) # per_page: 每頁顯示條目數量

# count: 資料總個數

# num_pages:總頁數

# page_range:總頁數的索引範圍,如: (

1,10),(1,200

) # page: page物件

try:

posts =paginator.page(current_page)

# object_list 分頁之後的資料列表

# number 當前頁

# paginator paginator物件

except pagenotaninteger:

posts = paginator.page(1

) except emptypage:

posts =paginator.page(paginator.num_pages)

return render(request, '

index.html

', )

views.py

下面說一下django存在的不足,我們常見的翻頁中都應該如下圖

下面我們需要對paginator進行一定的修改,所以我們可以重新寫乙個類,繼承paginator所有的方法,再增加新的方法用於實現顯示數字的功能

class

custompaginator(paginator):

def __init__(self,current_page,per_page_num,*args,**kwargs):

# 當年頁碼

self.current_page = int

(current_page)

# 最多顯示頁碼的個數

self.per_page_num = int

(per_page_num)

super(custompaginator,self).__init__(*args,**kwargs)

def pager_num_range(self):

# self.num_pages 表示總共有多少頁

# 情況1:當總頁數小於我們要顯示的頁碼個數

if self.num_pages

return range(1,self.num_pages+1

) part = int(self.per_page_num/2

) # 情況2:我們需要顯示10個頁碼,但是此時當前頁為第2頁,依舊顯示1-10

if self.current_page<=part:

return range(1,self.per_page_num+1

) # 情況3:我們需要顯示10個頁碼,共有20頁,但是此時當前頁為第18頁,依舊顯示11-20

if (self.current_page+part)>self.num_pages:

return range(self.num_pages-self.per_page_num,self.num_pages+1

) # 情況4:正常的中間情況

return range(self.current_page-part,self.current_page+part+1)

然後是對應的前端

"en

">

"/index1.html?p=}

#}

"font-size: 20px

" href="

/index1.html?p=}

">}

"/index1.html?p=}

">}

"/index1.html?p=}

}/}

以上就是關於分頁的所有內容。

django第11天 分頁器

批量插入資料 book list 先生成物件 for i in range 100 book book name book s i,price 10 i 操作物件列表,設定一次操作多少條資料 book.objects.bulk create book list,10 1.匯入分頁器模組 from d...

python第25天 學習python第25天

今天是在尚學堂學習python第25天今天學習了使用者管理,許可權管理 使用者管理 1.使用者的登入與退出 語法 mysql h hostname p port u username p dbname e h hostname 指定要連線mysql的主機名或者ip hostname就是具體的主機名或...

python學習第7天

崔鑫陽 2019.225 課堂檢測題 輸入兩個數 求出他們之間所有的素數 把這些素數放在 乙個列表裡 求這個列表裡素數的和 以及 最大值 和最小值 寫到乙個 裡 num 1 int input 輸入第乙個數 num 2 int input 輸入第二個數 if num 1 num 2 turn num...