django交互mysql 实现分页 页码
在Django中,可以使用Django内置的Paginator类来实现分页。具体步骤如下:
- 导入Paginator类和EmptyPage、PageNotAnInteger异常类
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
- 获取需要分页的数据
data = MyModel.objects.all()
- 创建Paginator对象并指定每页显示的数量
paginator = Paginator(data, 10) # 每页显示10条数据
- 获取当前页码数
page = request.GET.get('page')
- 将当前页码数转换为整数类型,并处理异常情况
try:
page = int(page)
except:
page = 1
- 获取当前页的数据
try:
data_list = paginator.page(page)
except EmptyPage:
# 如果页数超出范围,返回最后一页数据
data_list = paginator.page(paginator.num_pages)
except PageNotAnInteger:
# 如果页码不是整数,返回第一页数据
data_list = paginator.page(1)
- 将获取到的数据传递给模板进行渲染
return render(request, 'template.html', {'data_list': data_list})
- 在模板中添加分页器
<!-- 渲染数据 -->
{% for data in data_list %}
<!-- 显示数据 -->
{% endfor %}
<!-- 显示分页器 -->
<div class="pagination">
<span class="step-links">
{% if data_list.has_previous %}
<a href="?page=1">« 第一页</a>
<a href="?page={{ data_list.previous_page_number }}">上一页</a>
{% endif %}
<span class="current-page">
第{{ data_list.number }}页,共{{ data_list.paginator.num_pages }}页
</span>
{% if data_list.has_next %}
<a href="?page={{ data_list.next_page_number }}">下一页</a>
<a href="?page={{ data_list.paginator.num_pages }}">最后一页 »</a>
{% endif %}
</span>
</div>
``
原文地址: https://www.cveoy.top/t/topic/fhXF 著作权归作者所有。请勿转载和采集!