如何在 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">&laquo;
                                </a>
                            </li>
                        % else %
                            <li class="page-item disabled">
                                <a class="page-link">&laquo;</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">&raquo;
                                </a>
                            </li>
                        % else %
                            <li class="page-item disabled">
                                <a class="page-link">&raquo;</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 模板中显示分页?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 和 Django 分页附加数据页面?

在 django 分页中显示页面项目计数

Django 模板中的动态分页

django模板分页器

对大量数据进行 Django 分页

如何使用基于 Django 类的通用 ListViews 的分页?