django分页
{% if is_paginated %} <div class="pagination-simple"> <!-- 如果当前页还有上一页,显示一个上一页的按钮 --> {% if page_obj.has_previous %} <a href="?page={{ page_obj.previous_page_number }}">上一页</a> {% endif %} <!-- 显示当前页面信息 --> <span class="current">第 {{ page_obj.number }} 页 / 共 {{ paginator.num_pages }} 页</span> <!-- 如果当前页还有下一页,显示一个下一页的按钮 --> {% if page_obj.has_next %} <a href="?page={{ page_obj.next_page_number }}">下一页</a> {% endif %} </div> {% endif %}
自带属性
paginator ,即 Paginator 的实例。
page_obj ,当前请求页面分页对象。
is_paginated,是否已分页。只有当分页后页面超过两页时才算已分页。
object_list,请求页面的对象列表,和 post_list 等价。所以在模板中循环文章列表时可以选 post_list ,也可以选 object_list。
视图处理
blog/views.py class IndexView(ListView): model = Post template_name = 'blog/index.html' context_object_name = 'post_list' # 指定 paginate_by 属性后开启分页功能,其值代表每一页包含多少篇文章 paginate_by = 10