這篇文章將為大家詳細講解有關Python Django如何添加首頁尾頁上一頁下一頁功能,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在吳堡等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設計制作按需制作,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,成都品牌網(wǎng)站建設,營銷型網(wǎng)站,外貿(mào)網(wǎng)站制作,吳堡網(wǎng)站建設費用合理。添加首頁和尾頁:
views.py:
from django.shortcuts import render from app01 import models def book_list(request): # 從 URL 中取參數(shù) page_num = request.GET.get("page") print(page_num, type(page_num)) page_num = int(page_num) # 定義兩個變量保存數(shù)據(jù)從哪兒取到哪兒 data_start = (page_num - 1) * 10 data_end = page_num * 10 # 書籍總數(shù) total_count = models.Book.objects.all().count() # 每一頁顯示多少條數(shù)據(jù) per_page = 10 # 總共需要多少頁碼來顯示 total_page, m = divmod(total_count, per_page) # 頁面上最多展示的頁碼 max_page = 11 half_max_page = max_page // 2 # 頁面上展示的頁碼的開始頁 page_start = page_num - half_max_page # 頁面上展示的頁碼的結(jié)束頁 page_end = page_num + half_max_page # 如果當前頁減一半比 1 小 if page_start <= 1: page_start = 1 page_end = max_page # 如果當前頁加一半比總頁碼還大 if page_end > total_page: page_end = total_page page_start = total_page - max_page + 1 # 如果還有數(shù)據(jù) if m: total_page += 1 all_book = models.Book.objects.all()[data_start:data_end] # 拼接 html 的分頁代碼 html_list = [] # 添加首頁按鈕 html_list.append('
book_list.html:
書籍列表
{% for book in books %} 序號 id 書名 {% endfor %} {{ forloop.counter }} {{ book.id }} {{ book.title }}
運行結(jié)果:
添加上一頁、下一頁:
views.py:
from django.shortcuts import render from app01 import models def book_list(request): # 從 URL 中取參數(shù) page_num = request.GET.get("page") print(page_num, type(page_num)) page_num = int(page_num) # 定義兩個變量保存數(shù)據(jù)從哪兒取到哪兒 data_start = (page_num - 1) * 10 data_end = page_num * 10 # 書籍總數(shù) total_count = models.Book.objects.all().count() # 每一頁顯示多少條數(shù)據(jù) per_page = 10 # 總共需要多少頁碼來顯示 total_page, m = divmod(total_count, per_page) # 頁面上最多展示的頁碼 max_page = 11 half_max_page = max_page // 2 # 頁面上展示的頁碼的開始頁 page_start = page_num - half_max_page # 頁面上展示的頁碼的結(jié)束頁 page_end = page_num + half_max_page # 如果當前頁減一半比 1 小 if page_start <= 1: page_start = 1 page_end = max_page # 如果當前頁加一半比總頁碼還大 if page_end > total_page: page_end = total_page page_start = total_page - max_page + 1 # 如果還有數(shù)據(jù) if m: total_page += 1 all_book = models.Book.objects.all()[data_start:data_end] # 拼接 html 的分頁代碼 html_list = [] # 添加首頁按鈕 html_list.append('
book_list.html:
書籍列表
{% for book in books %} 序號 id 書名 {% endfor %} {{ forloop.counter }} {{ book.id }} {{ book.title }}
運行結(jié)果:
后續(xù)改進:
處理用戶傳給 url 的 page 參數(shù)異常的值的情況
例如:
訪問,http://127.0.0.1:8888/book_list/?page=a
訪問,http://127.0.0.1:8888/book_list/?page=-1
都會出錯
改進:
from django.shortcuts import render from app01 import models def book_list(request): # 從 URL 中取參數(shù) page_num = request.GET.get("page") print(page_num, type(page_num)) # page_num 為 str 類型 # 書籍總數(shù) total_count = models.Book.objects.all().count() # 每一頁顯示多少條數(shù)據(jù) per_page = 10 # 總共需要多少頁碼來顯示 total_page, m = divmod(total_count, per_page) # 如果還有數(shù)據(jù) if m: total_page += 1 try: page_num = int(page_num) # 如果輸入的頁碼數(shù)超過了大的頁碼數(shù),默認返回最后一頁 if page_num > total_page: page_num = total_page # 如果輸入的頁碼數(shù)小于 1,則返回第一頁 if page_num < 1: page_num = 1 except Exception as e: # 當輸入的頁碼不是正經(jīng)數(shù)字的時候 默認返回第一頁的數(shù)據(jù) page_num = 1 # 定義兩個變量保存數(shù)據(jù)從哪兒取到哪兒 data_start = (page_num - 1) * 10 data_end = page_num * 10 # 頁面上最多展示的頁碼 max_page = 11 half_max_page = max_page // 2 # 頁面上展示的頁碼的開始頁 page_start = page_num - half_max_page # 頁面上展示的頁碼的結(jié)束頁 page_end = page_num + half_max_page # 如果當前頁減一半比 1 小 if page_start <= 1: page_start = 1 page_end = max_page # 如果當前頁加一半比總頁碼還大 if page_end > total_page: page_end = total_page page_start = total_page - max_page + 1 all_book = models.Book.objects.all()[data_start:data_end] # 拼接 html 的分頁代碼 html_list = [] # 添加首頁按鈕 html_list.append('
如果數(shù)據(jù)庫中的數(shù)據(jù)數(shù)少于 max_page,則會顯示負數(shù)的頁數(shù)
例如數(shù)據(jù)庫中只有 21 條數(shù)據(jù):
改進:
from django.shortcuts import render from app01 import models def book_list(request): # 從 URL 中取參數(shù) page_num = request.GET.get("page") print(page_num, type(page_num)) # page_num 為 str 類型 # 書籍總數(shù) total_count = models.Book.objects.all().count() # 每一頁顯示多少條數(shù)據(jù) per_page = 10 # 總共需要多少頁碼來顯示 total_page, m = divmod(total_count, per_page) # 如果還有數(shù)據(jù) if m: total_page += 1 try: page_num = int(page_num) # 如果輸入的頁碼數(shù)超過了大的頁碼數(shù),默認返回最后一頁 if page_num > total_page: page_num = total_page # 如果輸入的頁碼數(shù)小于 1,則返回第一頁 if page_num < 1: page_num = 1 except Exception as e: # 當輸入的頁碼不是正經(jīng)數(shù)字的時候 默認返回第一頁的數(shù)據(jù) page_num = 1 # 定義兩個變量保存數(shù)據(jù)從哪兒取到哪兒 data_start = (page_num - 1) * 10 data_end = page_num * 10 # 頁面上最多展示的頁碼 max_page = 11 # 如果總頁碼數(shù)小于頁面上最多展示的頁碼 if total_page < max_page: max_page = total_page half_max_page = max_page // 2 # 頁面上展示的頁碼的開始頁 page_start = page_num - half_max_page # 頁面上展示的頁碼的結(jié)束頁 page_end = page_num + half_max_page # 如果當前頁減一半比 1 小 if page_start <= 1: page_start = 1 page_end = max_page # 如果當前頁加一半比總頁碼還大 if page_end > total_page: page_end = total_page page_start = total_page - max_page + 1 all_book = models.Book.objects.all()[data_start:data_end] # 拼接 html 的分頁代碼 html_list = [] # 添加首頁按鈕 html_list.append('
運行結(jié)果:
python的數(shù)據(jù)類型:1. 數(shù)字類型,包括int(整型)、long(長整型)和float(浮點型)。2.字符串,分別是str類型和unicode類型。3.布爾型,Python布爾類型也是用于邏輯運算,有兩個值:True(真)和False(假)。4.列表,列表是Python中使用最頻繁的數(shù)據(jù)類型,集合中可以放任何數(shù)據(jù)類型。5. 元組,元組用”()”標識,內(nèi)部元素用逗號隔開。6. 字典,字典是一種鍵值對的集合。7. 集合,集合是一個無序的、不重復的數(shù)據(jù)組合。
關于“Python Django如何添加首頁尾頁上一頁下一頁功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。