django 分页 切割页码
时间: 2024-08-16 14:04:37 浏览: 48
Django 中的分页通常涉及到 `Paginator` 和模板标签 `{% for %}` 的结合使用。当你有一个大的数据集合,想要展示给用户的小部分数据时,分页就很有帮助了。`django.core.paginator.Paginator` 类用于对数据进行切分。
首先,你需要创建一个 `Paginator` 对象,指定每页显示多少条记录,然后调用 `paginate()` 方法,它会返回一个包含当前页面数据和总页数的对象:
```python
from django.core.paginator import Paginator
# 假设qs是一个查询集
page_obj = Paginator(qs, per_page=10) # 每页10条
```
接着,在模板中,你可以通过循环遍历这个对象的 `object_list` 属性获取当前页的数据,并使用 `page_number` 或 `page_range` 获取页码范围。例如:
```html
{% load paginator_tags %}
{% autopaginate object_list %}
<ul>
{% for item in object_list %}
<li>{{ item }}</li>
{% endfor %}
</ul>
<nav>
<ul class="pagination">
{% if page_obj.has_previous %}
<a href="?page={{ page_obj.previous_page_number }}">上一页</a>
{% endif %}
{% for page in page_obj.page_range %}
{% if page == page_obj.number %}
<span class="current">{{ page }} / {{ page_obj.paginator.num_pages }}</span>
{% else %}
<a href="?page={{ page }}">{{ page }}</a>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">下一页</a>
{% endif %}
</ul>
</nav>
{% paginate %}
```
在这里,`{% autopaginate %}` 标签自动插入分页链接,`{% paginate %}` 则关闭分页处理。
阅读全文
相关推荐













