1、初始项目,python-Django框架封装的分页方式
2、修改请求的方法逻辑:
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage
#Django分页
def index2_view(request):
#获取当前页码数
num = request.GET.get('num',1)
n = int(num)
#查询所有数据
movies = Movie.objects.all()
#创建分页器对象
pager = Paginator(movies,20)
#获取当前页的数据
try:
perpage_data = pager.page(n)
except PageNotAnInteger:
#返回第一页的数据
perpage_data = pager.page(1)
except EmptyPage:
#返回最后一页的数据
perpage_data = pager.page(pager.num_pages)
#每页开始页码
begin = (n-int(math.ceil(10.0/2)))
if begin<1:
begin = 1
# 每页结束页码
end = begin+9
if end >pager.num_pages:
end = pager.num_pages
if end <=10:
begin = 1
else:
begin = end -9
pagelist = range(begin,end+1)
return render(request,'index01.html',{'pager':pager,'perpage_data':perpage_data,'pagelist':pagelist,'currentPage':n})
如图:
3、修改前端快标签页面逻辑:
<div>
<a href="/movie/index/?num=1">首页</a> 
{% if perpage_data.has_previous %}
<a href="/movie/index/?num={{ perpage_data.previous_page_number }}">上一页</a>
{% endif %}
{# {% for n in pager.page_range %}#}
{# {% if n < 11 %}#}
{# <a href="/movie/index/?num={{ n }}">{{ n }}</a> #}
{# {% endif %}#}
{# {% endfor %}#}
{% for n in pagelist %}
{% if currentPage == n %}
<a href="/movie/index/?num={{ n }}" style="font-size: 28px;color:red;">{{ n }}</a> 
{% else %}
<a href="/movie/index/?num={{ n }}">{{ n }}</a> 
{% endif %}
{% endfor %}
{% if perpage_data.has_next %}
<a href="/movie/index/?num={{ perpage_data.next_page_number }}">下一页</a>
{% endif %}
 <a href="/movie/index/?num={{ pager.num_pages}}">末页</a>
</div>
如图:
4、重启项目,访问项目,如图: