我在我的网站上有一个标准博客,我为Django Paginator添加了分页。我还有一个侧边栏,遍历所有帖子并显示标题和链接。除list_view
外,所有内容似乎都有效,但侧栏只显示当前页面上可见的帖子的标题和链接,但在detail_view
中,所有标题和链接均可用。我知道为什么要这样做,我只是不明白如何解决它。
下面是我list_view
的副本和一些截图,以便于参考。谢谢。
post_list
def post_list(request, tag_slug=None):
posts = Post.published.all()
tag = None
if tag_slug:
tag = get_object_or_404(Tag, slug=tag_slug)
posts = posts.filter(tags__in=[tag])
paginator = Paginator(posts, 3) # 3 posts in each page
page = request.GET.get('page')
try:
posts = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer deliver the first page
posts = paginator.page(1)
except EmptyPage:
# If page is out of range deliver last page of results
posts = paginator.page(paginator.num_pages)
return render(request, 'press/post_list.html', {'page': page, 'posts': posts, 'tag': tag})
答案 0 :(得分:1)
为所有帖子单独发送“帖子”列表,而不应用分页器。将分页的那些发送到单独的列表变量中,例如“paginated_posts”。这样您就不会受限于右侧的分页帖子。
我认为这样做的最佳方式是每页发送相同数量的帖子作为您要为“最近的帖子”显示的最大数量,假设您没有尝试在最近的帖子中显示所有帖子。如果您最近的帖子中有一个愉快的媒介#匹配您想要分页的帖子数量 - 您已经完成了设置。