Шаблон пейджера Джанго

Шаблоны страниц:

 

Класс Разбивка (Object):
     DEF  __init__ (Self, current_page, ALL_COUNT являются per_page_num = 2, pager_count = 11. ):
         "" " 
        Пакет вкладки данных 
        : пары current_page: эта страница 
        : пары all_count: Общее количество полос в базе данных 
        : PARAM отображается количество данных на страницу: per_page_num 
        : пары pager_count: до отображаемого номера страницы 
        
        использования: 
        QuerySet = model.objects.all () 
        page_obj = Разбивка (CURRENT_PAGE, ALL_COUNT есть) 
        page_data = QuerySet [page_obj.start: page_obj.end] 
        сбор данных вместо использования оригинального page_data QuerySet 
        извлечения передней вкладки стиль с page_obj.page_html 
        «» " 
        попробовать : 
            current_page =Int (CURRENT_PAGE)
         , за исключением Exception как е: 
            CURRENT_PAGE = 1 , если CURRENT_PAGE <1 : 
            CURRENT_PAGE = 1 
        self.current_page = CURRENT_PAGE 
        self.all_count = all_count 
        self.per_page_num = per_page_num # 总页码 
        all_pager, TMP = divmod (all_count, per_page_num)
         , если TMP : 
            all_pager + = 1 
        self.all_pager = all_pager 
        self.pager_count =

        




        
 pager_count
        self.pager_count_half = Int ((pager_count - 1) / 2. ) 

    @property 
    DEF Start (Self):
         возврат (. self.current_page - 1) * self.per_page_num 

    @property 
    DEF End (Self):
         возвращение self.current_page * self.per_page_num 

    DEF page_html (Self):
         # если общая р <11: 
        IF self.all_pager <= self.pager_count: 
            pager_start . = 1 
            pager_end . = self.all_pager 1 +
         # общая р> 11. 
        еще :
             # на этой странице , если <= страница отображать номер страницы 11/2
            если self.current_page <= self.pager_count_half: 
                pager_start = 1 
                pager_end = self.pager_count + 1 # 当前页大于5 остальное :
                 # 页码翻到最后 , если (self.current_page + self.pager_count_half)> self.all_pager: 
                    pager_end = само .all_pager + 1 
                    pager_start = self.all_pager - self.pager_count + 1
                 еще : 
                    pager_start = self.current_page - self.pager_count_half 
                    pager_end

            
            
                = Self.current_page + self.pager_count_half + 1 

        page_html_list = []
         # 添加前面的нав和уль标签 
        page_html_list.append ( ''» 
                    <нав Aria метки = 'Страница навигации>' 
                    <ул класс = 'нумерацией страниц'> 
                '' ' ) 
        first_page = ' <литий> <a href="?page=%s">首页</a> </ LI> ' % (1 ) 
        page_html_list.append (first_page) , 

        если self.current_page <= 1 : 
            prev_page = ' <литий класс = "отключено"> <A HREF =»# «> Предыдущий </a> </ li> ' 
        еще :
            prev_page = ' <литий> <a href="?page=%s">上一页</a> </ литий> ' % (self.current_page - 1 ,) 

        page_html_list.append (prev_page) 

        для I в диапазоне ( pager_start, pager_end):
             если я == self.current_page: 
                температура = ' <литий класс = "активный"> <a href="?page=%s">% s </a> </ LI> ' % (я , я,)
             остальное : 
                температура = ' <литий> <a href="?page=%s">% s </a> </ литий> '% (I, I,) 
            page_html_list.append (темп) , 

        еслиself.current_page> = self.all_pager: 
            next_page = ' <литий класс = "отключен"> <a href="#">下一页</a> </ li> ' 
        еще : 
            next_page = ' <li> <а HREF = "? страница =% s">下一页</a> </ литий> ' % (self.current_page + 1 ,) 
        page_html_list.append (next_page) 

        LAST_PAGE = ' <литий> <A HREF = "страница =% S ">尾页</a> </ литий> ' % (self.all_pager,) 
        page_html_list.append (LAST_PAGE) 
        # 尾部添加标签 
        page_html_list.добавьте ( ''» 
                                           </ нав>
                                           </ UL> 
                                       ''» )
        Возвращение  '' .join (page_html_list)

 

рекомендация

отwww.cnblogs.com/xt12321/p/11025055.html