django 使用dj-pagination 來實(shí)現(xiàn)分頁

1.安裝dj-pagination

pip install dj-pagination

2.配置setting文件

  • 打開django項(xiàng)目的配置文件。在INSTALLED_APPS加入此應(yīng)用叠赦。
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...
    'dj_pagination',
]
  • MIDDLEWARE 安裝分頁中間件流妻。您的設(shè)置文件如下所示:
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.配置模板

在你需要添加分頁的模板文件的頂部加載標(biāo)簽pagination_tags

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

找到你想要進(jìn)行分頁的模型列表,并在迭代之前在該變量上使用autopaginate標(biāo)簽绅这。(使用規(guī)范post_list作為示例變量):

...
{% autopaginate post_list %} 
{# 在迭代post前加入{% autopaginate object_list %} #}
{# 可以控制每頁的數(shù)量各薇,在object_list后面填寫要每頁文章的數(shù)量  默認(rèn)20 #}
{# 如 :{% autopaginate post_list 10  %}  #}
{% for post in post_list %}
...
{% endfor %}
...

完成后在您想要顯示分頁的位置,加入paginate標(biāo)簽:

{ % paginate  %}

運(yùn)行你的項(xiàng)目君躺。打開頁面可以看到分頁峭判。

4.自定義分頁模板

dj-pagination的默認(rèn)模板很簡陋我們希望用bootstrap4的分頁樣式來美化一下。需要引入bootstrap4的樣式文件棕叫。我們使用cdn,復(fù)制下面代碼粘貼到你的head中林螃。

<link  rel="stylesheet">
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> 
<script src="https://cdn.bootcss.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

找到dj-pagination的模板文件。在你的python包目錄下的dj_pagination\templates\pagination\pagination.html
備份默認(rèn)模板俺泣。
打開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 %}

完畢完残!再次刷新網(wǎng)頁,分頁就美觀了横漏。


完美分頁圖
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谨设,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子缎浇,更是在濱河造成了極大的恐慌扎拣,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件素跺,死亡現(xiàn)場離奇詭異二蓝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)指厌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門刊愚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人踩验,你說我怎么就攤上這事鸥诽。” “怎么了箕憾?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵牡借,是天一觀的道長。 經(jīng)常有香客問我厕九,道長蓖捶,這世上最難降的妖魔是什么地回? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任扁远,我火速辦了婚禮,結(jié)果婚禮上刻像,老公的妹妹穿的比我還像新娘畅买。我一直安慰自己,他們只是感情好细睡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布谷羞。 她就那樣靜靜地躺著,像睡著了一般溜徙。 火紅的嫁衣襯著肌膚如雪湃缎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天蠢壹,我揣著相機(jī)與錄音嗓违,去河邊找鬼。 笑死图贸,一個胖子當(dāng)著我的面吹牛蹂季,可吹牛的內(nèi)容都是我干的冕广。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼偿洁,長吁一口氣:“原來是場噩夢啊……” “哼撒汉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涕滋,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤睬辐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后何吝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溉委,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年爱榕,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓣喊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡黔酥,死狀恐怖藻三,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情跪者,我是刑警寧澤棵帽,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站渣玲,受9級特大地震影響逗概,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜忘衍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一逾苫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧枚钓,春花似錦铅搓、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嫩舟,卻和暖如春氢烘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背家厌。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工播玖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人像街。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓黎棠,卻偏偏與公主長得像晋渺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脓斩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容