Шаблоны страниц:
Класс Разбивка (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)