純粋に書かれた記録は、後に使用することができます。
pagination.py
django.utils.safestring インポートmark_safeの クラス:ページ区切り '' ' ''' DEF __init__(自己、CURRENT_PAGE、DATA_LIST、要求、per_n_page = 10 ): self.current_page = INT(CURRENT_PAGE) self.per_n_page = INT(per_n_page) 自己.data_list = DATA_LIST self.request = 要求 self.url = request.pathの @propertyは デフを開始(自己): 戻り self.current_page * self.per_n_page- self.per_n_page @propertyは DEF :(自己)終了 戻り self.current_page * self.per_n_page @property DEF :get_page_no(自己) TOTAL_PAGE_COUNT = LEN(self.data_list) カウント、Y = divmod(TOTAL_PAGE_COUNT、self.per_n_page)の 場合Y: カウント + = 1 page_no = [] のための I における範囲(1 、数): page_no.append(I) の戻りpage_no DEF 別個の(自己): TOTAL_PAGE_COUNT =(self.data_list)lenの 数、Y = divmod(TOTAL_PAGE_COUNT、self.per_n_page) 場合Y: カウント + = 1 page_no = [] のために私に範囲(1 、数): page_no.append(I) page_list = [] #頁面列表 START_INDEX = self.current_page - 3 END_INDEX = self.current_page + 3 + 1 であれば START_INDEX <= 0: START_INDEX = 1 であれば END_INDEX>数: END_INDEX =数+ 1つの TEMP = " <LIクラス= 'ページ・アイテム'> <a class='page-link' href='%s?p=1' aria-label='Previous'> <スパンアリア、隠されました= '真'>&LAQUO; </スパン> </a>の</ LI> "%(self.url) page_list.append(TEMP) のための I における範囲(START_INDEX、END_INDEX): もし I == self.current_page。 TEMP = " <LIクラス= 'ページ項目アクティブ'> <a class='page-link' href='%s?p=%s'>%S <スパンクラス= 'SR専用'>(現在の) </ span>をする</a>ます。</ li> "%(self.url、I、I) #TEMP = "<a class='page active' href='%s?p=%s'>%sの</a>を" %(self.url、I、I) 他: TEMP = " <LIクラス=」ページアイテム'> <a class='page-link' href='%s?p=%s'>%sの</a>の</ LI> "%(self.url、I、I) #1 TEMP = "<a class='page' href='%s?p=%s'>%S </a>の" %(self.url、I、I) page_list.append(TEMP) TEMP = " <LIクラス= 'ページ・アイテム'> <a class='page-link' href='%s?p=%s' aria-label='Next'> <スパンARIA-隠さ= '真'>表示&raquo; </ span>のこちら</a>ます。</ li>"%(self.url、カウント数) page_list.append(TEMP) page_str = " ".join(page_list) page_str =mark_safe(page_str) リターン page_str
views.py
CURRENT_PAGE = request.GET.get(" P "、1 ) ページ =ページ区切り(CURRENT_PAGE、customer_list、request.path、per_n_page = 5 ) customer_list = customer_list [page.start:page.end] page_str = page.separate() リターンレンダリング(リクエスト、' index.htmlを'、{リスト' :リスト、 ' page_str ' :page_str、 ' ユーザ名」:ユーザー名 })
テンプレート
< TBODY > {リスト%でiに対する%} < TR > < TD > {{i.item}} </ TD > </ TR > {%ENDFOR%} </ TBODY > </ テーブル> < NAV ARIAラベル= "ページナビゲーション" > < UL クラス= "ページネーションフロート左MT-3" > {{page_str}} </ UL > < 選択IDを= "items_per_page"クラス= "フロート左ML-3 MT-3"> < オプション値= "10" > 10 </ オプション> < オプション値= "15" > 15 </ オプション> < オプション値= "25" > 25 </ オプション> < オプション値= "50" > 50 < / オプション> </ 選択> </ NAV >