Django-博客分頁(yè)

  • 導(dǎo)入django內(nèi)置的分頁(yè)器
    from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
  • 定義一個(gè)分頁(yè)器函數(shù)
def make_paginator(objects, page, num=1):
    paginator = Paginator(objects, num)
    try:
        object_list = paginator.page(page)
    except PageNotAnInteger:
        object_list = paginator.page(1)
    except EmptyPage:
        object_list = paginator.page(paginator.num_pages)
    return object_list, paginator
  • 在index中將文章總數(shù)和當(dāng)前訪問(wèn)頁(yè)碼傳入分頁(yè)器函數(shù)
def index(request):
    entries = models.Entry.objects.all()
    page = request.GET.get('page', 1)
    entry_list, paginator = make_paginator(entries, page)
    page_data = pagination_data(paginator, page)
    return render(request, 'blog/index.html', locals())
  • 在index模板中寫入代碼
                {%  if entry_list.has_previous %}
                    <li><a href="?page={{ entry_list.previous_page_number }}"><i class="glyphicon glyphicon-chevron-left"></i>前一頁(yè)</a></li>
                {% endif %}

                {% if first %}
                    <li><a href="?page=1">1</a></li>
                {% endif %}

                {% if left %}
                    {% if left_has_more %}
                        <span>...</span>
                    {% endif %}

                    {% for i in left %}
                        <li><a href="?page={{ i }}">{{ i }}</a></li>
                    {% endfor %}
                {% endif %}


                <li class="active"><a href="?page={{ entry_list.number }}">{{ entry_list.number }}</a></li>

                {% if right %}
                    {% for i in right %}
                        <li><a href="?page={{ i }}">{{ i }}</a></li>
                    {% endfor %}

                    {% if right_has_more %}
                        <span>...</span>
                    {% endif %}
                {% endif %}

                {% if last %}
                    <li><a href="?page={{ entry_list.num_pages }}">{{ entry_list.num_pages }}</a></li>
                {% endif %}

                {% if entry_list.has_next %}
                    <li><a href="?page={{ entry_list.next_page_number }}">下一頁(yè)<i class="glyphicon glyphicon-chevron-right"></i></a></li>
                {% endif %}
                </ul>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 項(xiàng)目設(shè)置 DEBUG 一個(gè)布爾型用來(lái)開(kāi)啟或關(guān)閉項(xiàng)目的debug模式。如果設(shè)置為True,當(dāng)你的應(yīng)用拋出一個(gè)未...
    lijun_m閱讀 885評(píng)論 0 0
  • 前言 應(yīng)用程序有兩種模式C/S、B/S。C/S是客戶端/服務(wù)器端程序,也就是說(shuō)這類程序一般獨(dú)立運(yùn)行。而B(niǎo)/S就是瀏...
    hehuijun閱讀 15,031評(píng)論 0 17
  • 方法一:使用pure_pagination進(jìn)行分頁(yè) 1. pure_pagination介紹 pure_pagin...
    Jlan閱讀 1,188評(píng)論 0 7
  • 一、Django框架前言知識(shí): 1、C/S和B/S的區(qū)別: C/S結(jié)構(gòu)軟件:客戶端/服務(wù)端軟件,即客戶端要自己下載...
    月下獨(dú)酌123閱讀 5,107評(píng)論 0 36
  • 模塊間聯(lián)系越多,其耦合性越強(qiáng),同時(shí)表明其獨(dú)立性越差( 降低耦合性,可以提高其獨(dú)立性)。軟件設(shè)計(jì)中通常用耦合度和內(nèi)聚...
    riverstation閱讀 2,201評(píng)論 0 8

友情鏈接更多精彩內(nèi)容