- 安装django插件
pip install dj_pagination
- 在settings.py中配置
INSTALLED_APPS = [
'dj_pagination'
]
MIDDLEWARE = [
....
'dj_pagination.middleware.PaginationMiddleware',
]
- 加载分页标签
{% load pagination_tags %}
{% autopaginate gs_list 2 %}
# 在需要分页的遍历式子上加上 自动分页以及每页的个数
{% for gs in gs_list %}
最后在需要展示分页的地方输入
{% paginate %}
- 美化分页标签
把E:\python\Scripts\myblog\Lib\site-packages\dj_pagination\templates\pagination文件下的pagination.html更改为以下内容即可
{% if is_paginated %}
{% load i18n %}
<nav aria-label="Page navigation example">
<ul class="pagination">
{% block previouslink %}
{% if page_obj.has_previous %}
{% if disable_link_for_first_page and page_obj.previous_page_number == 1 %}
<li class="page-item"><a href="{{ request.path }}{% if getvars %}?{{ getvars|slice:"1:" }}{% endif %}" class="prev page-link">{{ previous_link_decorator|safe }}{% trans "" %}</a></li>
{% else %}
<li class="page-item"><a href="?page{{ page_suffix }}={{ page_obj.previous_page_number }}{{ getvars }}" class="prev page-link">{{ previous_link_decorator|safe }}{% trans "" %}</a></li>
{% endif %}
{% else %}
{% if display_disabled_previous_link %}
<li class="page-item"><span class="disabled prev page-link">{{ previous_link_decorator|safe }}{% trans "previous" %}</span></li>
{% endif %}
{% endif %}
{% endblock previouslink %}
{% block pagelinks %}
{% if display_page_links %}
{% for page in pages %}
{% if page %}
{% ifequal page page_obj.number %}
<li class="page-item active"><a class="current page page-link ">{{ page }}<span class="sr-only">(current)</span></a></li>
{% else %}
{% if disable_link_for_first_page and page == 1 %}
<li class="page-item"><a href="{{ request.path }}{% if getvars %}?{{ getvars|slice:"1:" }}{% endif %}" class="page page-link">{{ page }}</a></li>
{% else %}
<li class="page-item"><a href="?page{{ page_suffix }}={{ page }}{{ getvars }}" class="page page-link">{{ page }}</a></li>
{% endif %}
{% endifequal %}
{% else %}
<li class="page-item">...</li>
{% endif %}
{% endfor %}
{% endif %}
{% endblock pagelinks %}
{% block nextlink %}
{% if page_obj.has_next %}
<li class="page-item"><a href="?page{{ page_suffix }}={{ page_obj.next_page_number }}{{ getvars }}" class="next page-link">{% trans "" %}{{ next_link_decorator|safe }}</a></li>
{% else %}
{% if display_disabled_next_link %}
<li class="page-item"><span class="disabled next page-link">{% trans "" %}{{ next_link_decorator|safe }}</span></li>
{% endif %}
{% endif %}
{% endblock nextlink %}
</ul>
</nav>
{% endif %}
最后是dj-pagination中setting中的可选事项修改,位置在Lib\site-packages\dj_pagination
在dj-pagination中,没有必需的设置。但是,有一小组可选设置可用于更改分页标记的默认行为。这是一个概述:
PAGINATION_DEFAULT_PAGINATION
如果未指定编号,则在页面上显示的默认项目数。默认为20
PAGINATION_DEFAULT_WINDOW
要显示的当前页面左侧和右侧的项目数(占省略号)。默认为4。#感觉改为2或3的效果会更好一点
PAGINATION_DEFAULT_MARGIN
FIXME:这需要记录在案。
PAGINATION_DEFAULT_ORPHANS
被定义为“最后一页允许的最小项目数,默认为零”。
PAGINATION_INVALID_PAGE_RAISES_404
确定无效页面是否引发Http404或仅设置 invalid_page上下文变量。 True是前者还是False 后者。默认为False
PAGINATION_DISPLAY_PAGE_LINKS
如果设置为False,则不会显示单个页面的链接。默认为True。
PAGINATION_PREVIOUS_LINK_DECORATOR
上一页链接的HTML前缀; 默认值是‹‹。
PAGINATION_NEXT_LINK_DECORATOR
用于下一页链接的HTML后缀; 默认值是››。
PAGINATION_DISPLAY_DISABLED_PREVIOUS_LINK
如果设置为False,如果没有上一页,则不会显示上一页链接。默认为False。
PAGINATION_DISPLAY_DISABLED_NEXT_LINK
如果设置为False,如果没有下一页,则不会显示下一页链接。默认为False。
PAGINATION_DISABLE_LINK_FOR_FIRST_PAGE
如果设置为False,则第一页将?page=1显示分页中的链接后缀,否则将被省略。默认为True。