Django 内置的分页器功能 Paginator 非常容易实现数据的分页显示,及对应的控制
先不使用Paginator,自己造一个分页器,主要利用的是数据库查询的数据集的切片。
def get_students(request):
# 用数据库分页方法实现分页展示
# http://127.0.0.1:8000/app/getstudents/?page=4&perpage=10,用这个?page=4&perpage=10传递参数
# 如果没有获取到参数,则设置默认值第1页,每页数量10条
page=int(request.GET.get('page',1))
per_page=int(request.GET.get('perpage',10))
students=Students.objects.all()[per_page*(page-1):per_page*page]
# students=Students.objects.all()
data={
'students':students,
}
return render(request,'students.html',context=data)
学生列表
-
{% for student in students %}
- {{ student.s_name }}-年龄是-{{ student.s_age }} {% endfor %}
使用自带的分页器Paginator 功能
# 用Django自带的分页器功能实现分页
def get_students_with_page(request):
page=int(request.GET.get('page',1))
per_page=int(request.GET.get('perpage',10))
students=Students.objects.all()
paginator=Paginator(students,per_page)
page_object=paginator.page(page)
data={
'object_list':page_object,
'page_list':paginator.page_range,
}
return render(request,'get_students_with_page.html',context=data)
前端的代码附加bootstrap优化显示效果,其中使用 Paginator 的属性
- number
- object_list
- page_range
- previous_page_number
- next_page_number
- has_previous
- has_next
其中 has_previous 和has_next 用在分页器的首尾判断是否存在,避免超出范围报错。
登录
{# 注意 bootstrap和 jquery 不是版本越高越好,要考虑浏览器的版本问题 #}
{# #}
{# #}
学生列表
-
{% for object in object_list.object_list %}
- {{ object.s_name }}------{{ object.s_age }} {% endfor %}
用paginator实现点击页面跳转到对应的页面内容
-
{% for page in page_list %}
{# { page }}">{{ page }}#}
{{ page }}
{% endfor %}



