在开发 Web 应用时,处理大量数据时分页功能是非常必要的。Django 提供了强大的分页工具,帮助开发者高效实现数据分页展示。以下是关键步骤和示例:
1. 分页配置 🛠️
在 settings.py
中启用分页模块:
INSTALLED_APPS = [
...
'django.core.paginator',
]
📌 注意:确保已安装 django-pagination
包(如需,可前往/zh/tutorials/django-installation查看安装教程)
2. 视图实现 📜
在视图中使用 Paginator
类:
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def my_view(request):
items = Item.objects.all()
paginator = Paginator(items, 10) # 每页显示10条数据
page = request.GET.get('page')
try:
paginated_items = paginator.page(page)
except PageNotAnInteger:
paginated_items = paginator.page(1)
except EmptyPage:
paginated_items = paginator.page(paginator.num_pages)
return render(request, 'template.html', {'items': paginated_items})
3. 模板渲染 🧩
在模板中使用分页导航:
<div>
<ul>
{% for item in items %}
<li>{{ item.name }}</li>
{% endfor %}
</ul>
<div class="pagination">
{% if items.has_previous %}
<a href="?page={{ items.previous_page_number }}">上一页</a>
{% endif %}
<span>第 {{ items.number }} 页</span>
{% if items.has_next %}
<a href="?page={{ items.next_page_number }}">下一页</a>
{% endif %}
</div>
</div>
4. 扩展阅读 📚
📌 提示:分页功能可提升用户体验,建议结合实际需求调整每页数据量和导航样式。如需进一步优化,可参考分页性能优化指南。