django中的分页器

Posted

技术标签:

【中文标题】django中的分页器【英文标题】:Paginator in django 【发布时间】:2019-01-17 00:11:15 【问题描述】:

嗨,我在看https://docs.djangoproject.com/en/2.1/topics/pagination/ 关于 django 分页器的文档

在它使用的代码中

from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator

    from django.shortcuts import render

    def listing(request):
        contact_list = Contacts.objects.all()
        paginator = Paginator(contact_list, 25) # Show 25 contacts per page

        page = request.GET.get('page')
        contacts = paginator.get_page(page)
        return render(request, 'list.html', 'contacts': contacts)

在模板中使用

<div class="pagination">
    <span class="step-links">
        % if contacts.has_previous %
            <a href="?page=1">&laquo; first</a>
            <a href="?page= contacts.previous_page_number ">previous</a>
        % endif %

        <span class="current">
            Page  contacts.number  of  contacts.paginator.num_pages .
        </span>

        % if contacts.has_next %
            <a href="?page= contacts.next_page_number ">next</a>
            <a href="?page= contacts.paginator.num_pages ">last &raquo;</a>
        % endif %
    </span>
</div>

我了解所有代码,除了第一次渲染页面的价值是什么

在一行

page = request.GET.get('page')

我知道 django 运行

?page=值

并将值传递给页面参数,但第一次渲染时页面的值是什么

【问题讨论】:

【参考方案1】:

page 在这种情况下将是None,然后get_page 将返回第一页。

【讨论】:

谢谢,然后分页器中的 None 将是 1 不,contacts = paginator.get_page(page) 其中page=Nonecontacts = paginator.get_page(None) 返回第一页,如果在查询参数中有 ?page=3 那么page 将是 3 非常感谢您的帮助

以上是关于django中的分页器的主要内容,如果未能解决你的问题,请参考以下文章

Django 第八篇Django自带的分页器

013---Django的分页器

django -----分页器组件

django 的分页器Paginator ,从django中导入类

Django -- 11.组件_分页器

Django---分页器中间件