ジャンゴカスタムページング

純粋に書かれた記録は、後に使用することができます。

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 >

 

おすすめ

転載: www.cnblogs.com/jbite9057/p/11878090.html