def paginate_articles(self, all_articles, page_number): paginator = Paginator(all_articles, 5) p_range = paginator.page_range range_len = len(p_range) if page_number: page_number = int(page_number) if range_len <= 10: pass elif page_number <= 5: p_range = range(1, 11) elif page_number >= range_len - 5: p_range = range(page_number - 4, range_len + 1) else: p_range = range(page_number - 4, page_number + 6) paginator.p_range = p_range try: articles = paginator.page(page_number) except PageNotAnInteger: articles = paginator.page(1) except EmptyPage: articles = paginator.page(paginator.num_pages) if not page_number: articles.page_number = 1 else: articles.page_number = int(page_number) return articles