
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)
为了从URL请求获取页码,请使用:
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 %}}
</span><span class="pun">{%</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> page_object</span><span class="pun">.</span><span class="pln">has_previous </span><span class="pun">%}</span><span class="pln">
href</span><span class="pun">=</span><span class="str">"?page={{ page_object.previous_page_number }}"</span><span class="pln">
</span><span class="pun">{%</span><span class="pln"> endif </span><span class="pun">%}</span><span class="pln">
</span><span class="typ">Page</span><span class="pln"> </span><span class="pun">{{</span><span class="pln"> page_object</span><span class="pun">.</span><span class="pln">number </span><span class="pun">}}</span><span class="pln"> </span><span class="kwd">of</span><span class="pln"> </span><span class="pun">{{</span><span class="pln"> page_object</span><span class="pun">.</span><span class="pln">paginator</span><span class="pun">.</span><span class="pln">num_pages </span><span class="pun">}}</span><span class="pln">
</span><span class="pun">{%</span><span class="pln"> </span><span class="kwd">if</span><span class="pln"> page_object</span><span class="pun">.</span><span class="pln">has_next </span><span class="pun">%}</span><span class="pln">
href</span><span class="pun">=</span><span class="str">"?page={{ page_object.next_page_number }}"</span><span class="pln">
</span><span class="pun">{%</span><span class="pln"> endif </span><span class="pun">%}</span><span class="pln">
</span></pre>
参考链接