暑假作业就是老师留来骚扰暑假的老鼠屎,为了保持他们的存在感。可这种存在感就像你吃完正餐终于等到上甜点了,有人偏要往里面洒两滴芥末油.
视图函数
这里的数据模型仍然使用Django学习练手的数据
# coding:utf-8
from .models import Datas
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render
from django.http import HttpResponse
def show(request):
is_login = request.session.get('IS_LOGIN',False)
if not is_login:
return render(request, '404.html')
paginator = Paginator(Datas.objects.all().values(),3)
# 获取到数据的对象,按照每页5个
# paginator.count
# # 获取到的数据的总数
# paginator.num_pages
# # 获取的页数
# paginator.object_list
# 和 Datas.objects.all() 返回的结果一致
#------------------------------------#
# page1 = paginator.page(1)
# page1.object_list
# 即 Datas.objects.all() 取第一个结果
# page1.next_page_number()
# 获取下一页的页码,如果不存在则会报错
# page1.previous_page_number
# 获取上一页的页码,如果不存在则会报错
page = request.GET.get('page')
# 获取前端传递过来的page参数
try:
beatles_list = paginator.page(page)
print(beatles_list.object_list)
except PageNotAnInteger:
# 如果 page 参数不为正整数,显示第一页
beatles_list = paginator.page(1)
except EmptyPage:
# 如果 page 参数为空页,跳到最后一页
beatles_list = paginator.page(paginator.num_pages)
return render(request,'show.html',{'bea_list':beatles_list})
前端页面
base.html
<meta charset="UTF-8">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<title>
{% block title%} {% endblock %}
{% block content%}
{% endblock%}
</body>
show.html
{% extends 'base.html'%}
{% block title%} SHOW DATAS {% endblock%}
{% block content%}
{% for k in bea_list.object_list %}
{% for key,value in k.items %}
{{key}}:{{value}}
{%endfor%}
{% endfor %}
{# 存在上一页 #}
{% if bea_list.has_previous %}
``上一页
{% endif %}
{# 存在下一页 #}
{% if bea_list.has_next %}
``下一页
{% endif %}
{%endblock%}
返回显示
还可以直接从html中传递参数到分页器的page中,你可以这么写
<a href='/show?page=1'>CLICK</a>
对应是urls.py中设置好即可