【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客
《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com)
Django框架提供了一些类来帮助管理分页(Paginator)数据,即通过"上一页/下一页"链接拆分到多个页面的数据。这些类位于django/core/paginator.py模块中。Django框架使用的分页方法就是通过调用Paginator类来实现的。
Paginator类的语法格式如下:
class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)
下面是在视图中对查询集进行分页的代码示例,同时提供视图和随附的模板,以说明如何显示结果。具体代码如下:
【代码11-12】
01 from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
02 from django.shortcuts import render
03
04 def listing(request):
05 contact_list = Contacts.objects.all()
06 paginator = Paginator(contact_list, 25) # Show 25 contacts per page
07 page = request.GET.get('page')
08 contacts = paginator.get_page(page)
09 return render(request, 'list.html', {'contacts': contacts})
HTML模板list.html可以包括页面之间的导航,以及对象本身的任何有趣信息,具体代码如下:
【代码11-13】
01 {% for contact in contacts %}
02 {# Each "contact" is a Contact model object. #}
03 {{ contact.full_name|upper }}<br />
04 ...
05 {% endfor %}
06
07 <div class="pagination">
08 <span class="step-links">
09 {% if contacts.has_previous %}
10 <a href="?page=1"><< first</a>
11 <a href="?page={{ contacts.previous_page_number }}">previous</a>
12 {% endif %}
13
14 <span class="current">
15 Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
16 </span>
17 {% if contacts.has_next %}
18 <a href="?page={{ contacts.next_page_number }}">next</a>
19 <a href="?page={{ contacts.paginator.num_pages }}">last </a>
20 {% endif %}
21 </span>
22 </div>