Django分页(Pagination)

Pagination 分页使无涯教程可以在多个页面上分发可迭代的内容。 然后,可以使用上一页和下一页按钮的页码导航到这些页面。
分页器类和页面对象
Django提供了一个 Paginator 类,该类具有以下属性:
- page(page_number) - 返回具有给定page_number的page_object
- has_previous - 是否有上一页,返回True/False
- has_next - 是否有下一页,返回true/False
- previous_page_number - 返回上一页码
- next_page_number - 返回下一页号
- number - 返回当前页码
- paginator.num_pages - 返回总页码
首先,导入 Paginator 类。
from django.core.paginator import Paginator
现在,选择每页的对象数。
p = Paginator(queryset, number_of_objects_per_page)
然后,使用 page()函数制作页面对象。
page_object = p.page(page_number)
page_object = p.page(request.GET.get('page'))
最后,返回 page_object 作为上下文变量。 views.py下的组合代码如下所示:
from django.core.paginator import Paginator def my_view_function(request): queryset = ['A', 'B', 'C', 'D', 'E'] # sample data p = Paginator(queryset, 1) # for 1 object per page try: page_number = request.GET.get('page') page_object = p.page(page_number) except: page_object = p.page(1) # load first page by default return render(request, 'my_template.html', {'page_object':page_object})
在模板中添加分页
要从 Paginator page_object 应用页面效果,请参考以下代码:
{% for i in page_pbject %} {{i}} {% endfor %}} {% if page_object.has_previous %} href="?page={{ page_object.previous_page_number }}" {% endif %} Page {{ page_object.number }} of {{ page_object.paginator.num_pages }} {% if page_object.has_next %} href="?page={{ page_object.next_page_number }}" {% endif %}
祝学习愉快! (发现内容有误?请选中要编辑的内容 -> 右键 -> 修改 -> 提交!帮助我们改进教程质量)
精选教程推荐
👇 以下精选教程可能对您有帮助,拓展您的技术视野
暂无学习笔记,成为第一个分享的人吧!
您的笔记将帮助成千上万的学习者