如何在 Django 模板中显示分页?
Posted
技术标签:
【中文标题】如何在 Django 模板中显示分页?【英文标题】:How do I make my pagination show in Django template? 【发布时间】:2020-09-13 01:46:59 【问题描述】:大家好。我想在我的主页('index.html')中添加分页。我按照 Django 的文档进行分页,但我在其中添加了 Bootstrap 的分页以提供美观的外观。
但是,它确实显示在我的主页上。
这里是 index.html 代码
<div class="row">
<div class="col-md-12">
% if post.has_other_pages %
<ul class="pagination">
% if post.has_previous%
<li class="page-item">
<a href="?page=post.previous_page_number" class="page-link">«
</a>
</li>
% else %
<li class="page-item disabled">
<a class="page-link">«</a>
</li>
% endif %
% for i in post.paginator.page_range %
% if post.number == i %
<li class="page-item active">
<a class="page-link">i</a>
</li>
% else %
<li class="page-item">
<a href="?page=i"class="page-link">i</a>
</li>
% endif %
% endfor %
% if post.has_next%
<li class="page-item">
<a href="?page=post.next_page_number" class="page-link">»
</a>
</li>
% else %
<li class="page-item disabled">
<a class="page-link">»</a>
</li>
% endif %
</ul>
% endif %
</div>
</div>
这是包含分页的部分。 这是我的views.index
def index(request):
post = Post.objects.all()
paginator = Paginator(post, 3)
page = request.GET.get('page')
page_post = paginator.get_page(page)
context =
'post': page_post
return render(request, 'blog/index.html', context)
请问我做错了什么?
【问题讨论】:
【参考方案1】:你没有做错。但引导程序仅用于查看。因此,发送所有业务内容(可能是分页或其他任何内容)是一个很好的做法,它应该来自服务器。在我的建议中,最好使用 django 分页。 如果您有大量数据,您的应用程序在渲染如此大的数据时会变慢。
【讨论】:
我实际上是从数据库调用的。我在另一个项目中做了类似(或完全一样)的事情,而且效果很好。我不知道为什么这是一个例外。【参考方案2】:我通过从后端发布大约 6 篇文章而不是 3 篇(我最初有)来解决此问题,因为我只想每页显示 3 篇文章。保存并再次运行我的服务器后,分页工作正常。
【讨论】:
以上是关于如何在 Django 模板中显示分页?的主要内容,如果未能解决你的问题,请参考以下文章