django 使用dj-pagination 来实现分页

1.安装dj-pagination

pip install dj-pagination

2.配置setting文件

  • 打开django项目的配置文件。在INSTALLED_APPS加入此应用。
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...
    'dj_pagination',
]
  • MIDDLEWARE 安装分页中间件。您的设置文件如下所示:
MIDDLEWARE = [
    ...
    'dj_pagination.middleware.PaginationMiddleware',
]
  • 在TEMPLATES中添加请求上下文处理器。
[
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                ...
                'django.template.context_processors.request',
                'django.template.context_processors.debug',
                'django.template.context_processors.i18n',
                'django.template.context_processors.media',
                'django.contrib.auth.context_processors.auth',

            ],
        },
    },
]

3.配置模板

在你需要添加分页的模板文件的顶部加载标签pagination_tags

{% extends 'base.html' %}
{% load pagination_tags %}
...

找到你想要进行分页的模型列表,并在迭代之前在该变量上使用autopaginate标签。(使用规范post_list作为示例变量):

...
{% autopaginate post_list %} 
{# 在迭代post前加入{% autopaginate object_list %} #}
{# 可以控制每页的数量,在object_list后面填写要每页文章的数量  默认20 #}
{# 如 :{% autopaginate post_list 10  %}  #}
{% for post in post_list %}
...
{% endfor %}
...

完成后在您想要显示分页的位置,加入paginate标签:

{ % paginate  %}

运行你的项目。打开页面可以看到分页。

4.自定义分页模板

dj-pagination的默认模板很简陋我们希望用bootstrap4的分页样式来美化一下。需要引入bootstrap4的样式文件。我们使用cdn,复制下面代码粘贴到你的head中。


 

找到dj-pagination的模板文件。在你的python包目录下的dj_pagination\templates\pagination\pagination.html
备份默认模板。
打开pagination.html,修改为如下代码:

{% if is_paginated %}
{% load i18n %}

{% endif %}

完毕!再次刷新网页,分页就美观了。


完美分页图

你可能感兴趣的:(django 使用dj-pagination 来实现分页)