重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
class Page():
def __init__(self, page_num, total_count, base_url, params, per_page=10, max_page=11):
"""
page_num: 當前頁碼數
total_count: 數據總數
base_url: a標簽href的前綴
params: request對象,是QueryDict類型
per_page: 每頁顯示多少條數據
max_page: 單一頁面上最多顯示幾個頁碼
"""
self.page_num = page_num
self.total_count = total_count
self.base_url = base_url
self.params = params
self.per_page = per_page
self.max_page = max_page
# 總頁碼
total_page, m = divmod(self.total_count, self.per_page)
if m:
total_page += 1
self.total_page = total_page
try:
self.page_num = int(self.page_num)
# print("self.page_num==>", self.page_num) 1
# 如果輸入的頁碼數大于大的頁碼數,默認返回第一頁
if self.page_num > self.total_page:
self.page_num = self.total_page
elif self.page_num <= 0:
self.page_num = 1
except Exception as e:
# 當輸入的頁碼不是數字時,返回第一頁
self.page_num = 1
#如果當前頁碼數為0,那么數據開始位置也是0
if self.page_num == 0:
self.data_start = self.page_num
# 定義兩個變量保存數據從哪取到哪
else:
self.data_start = (self.page_num - 1) * 10
self.data_end = self.page_num * 10
#頁面上總共展示多少頁碼
#如果總頁數小于設定的單頁顯示頁碼數
if self.total_page < self.max_page:
self.max_page = self.total_page
# 讓選定頁碼取中,計算左右兩邊長度
self.half_max_page = self.max_page // 2
# 頁面上展示的頁碼從哪開始
self.page_start = self.page_num - self.half_max_page
# 頁面上展示的頁碼從哪結束
self.page_end = self.page_num + self.half_max_page
# 如果開始頁數小于1
if self.page_start <= 1:
self.page_start = 1
self.page_end = self.max_page
# 如果結束頁面大于大頁碼數
elif self.page_end >= self.total_page:
self.page_start = self.total_page - self.max_page + 1
self.page_end = self.total_page
#拷貝一份request對象,是個QueryDict形式,后面會用于獲取及修改url
import copy
self.params = copy.deepcopy(self.params) #{"page":"12","title_startwith":"py","id_gt":"5"}
@property
def start(self):
return self.data_start
@property
def end(self):
return self.data_end
def page_html(self):
# 自己拼接分頁的HTML代碼
html_str_list = []
print("html_str_list==>", html_str_list)
# 加上上一頁標簽
#判斷一下如果是第一頁就沒有上一頁了
if self.page_num <= 1:
html_str_list.append(' ')
#否則加上上一頁
else:
self.params["page"] = self.page_num - 1
html_str_list.append(' '.format(self.base_url ,self.params.urlencode()))
# 加上首頁
self.params["page"] = 1
html_str_list.append('首頁 '.format(self.base_url, self.params.urlencode()))
for i in range(self.page_start, self.page_end + 1):
#把QueryDict中的page修改為當前循環的頁碼
self.params["page"] = i
# 如果i等于當前頁就加一個樣式類
if i == self.page_num:
tmp = '{2} '.format(self.base_url, self.params.urlencode(), i)
else:
tmp = '{2} '.format(self.base_url, self.params.urlencode(), i)
html_str_list.append(tmp)
# 加上尾頁
self.params["page"] = self.total_page
html_str_list.append('尾頁 '.format(self.base_url, self.params.urlencode()))
# 加上下一頁標簽
#判斷,如果是最后一頁,就沒有下一頁
if self.page_num >= self.total_page:
html_str_list.append(' ')
else:
self.params["page"] = self.page_num + 1
html_str_list.append(' '.format(self.base_url, self.params.urlencode()))
page_html = "".join(html_str_list)
return page_html
另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。