Django實(shí)現(xiàn)分頁

Django實(shí)現(xiàn)分頁

views.py

from django.core.paginator import Paginator
from django.shortcuts import render
from .models import Blog,BlogType


def blog_list(request):
    # 獲取所有博客
    blog_all_list = Blog.objects.all()
    # 每10頁進(jìn)行分頁
    paginator = Paginator(blog_all_list,10)
    page_num = request.GET.get('page',1)   # 獲取url的頁面參數(shù)
    # 根據(jù)頁碼獲取每頁數(shù)據(jù)  頁碼參數(shù)出錯(cuò)時(shí),自動(dòng)轉(zhuǎn)為第一頁
    page_of_blogs = paginator.get_page(page_num)
    currenter_num = page_of_blogs.number # 獲取當(dāng)前頁碼
    # 獲取當(dāng)前頁碼前后各2頁的頁碼范圍
    page_range = list(range(max(currenter_num-2,1),currenter_num))+list(range(currenter_num,min(currenter_num+2,paginator.num_pages)+1))
    # 加上省略頁碼標(biāo)記
    if page_range[0] -1 >=2:
        page_range.insert(0,'...')
    if paginator.num_pages - page_range[-1] >=2:
        page_range.append('...')
    # 加上首頁和尾頁
    if page_range[0] !=1:
        page_range.insert(0,1)
    if page_range[-1] != paginator.num_pages:
        page_range.append(paginator.num_pages)
    blog_type_list = BlogType.objects.all()
    return render(request,'blog/blog_list.html',locals())

前端blog/blog_list.html中,借助于bootstrap

<div class="col-sm-8">
    <div class="panel panel-primary">
        <div class="panel-heading">{% block heading_title %}博客列表{% endblock %}</div>
        <div class="panel-body">
            {% for blog in page_of_blogs.object_list %}
                <a href="{% url 'blog:blog_detail' blog.id %}"><h3>{{ blog.title }}</h3></a>
                <p>
                    <span class="glyphicon glyphicon-tag"></span>
                    <a href="{% url 'blog:blog_with_type' blog.blog_type.pk %}">{{ blog.blog_type }}</a>
                    <span class="glyphicon glyphicon-time"></span>
                    發(fā)表日期:{{ blog.create_time|date:'Y-m-d H:i:s' }}
                </p>
                <p>{{ blog.content|truncatechars:30 }}</p>
                <hr>
            {% empty %}
                <p>暫無博客,敬請(qǐng)更新</p>
            {% endfor %}
        </div>
    </div>
    <nav aria-label="Page navigation">
        <ul class="pagination">
            {# 上一頁 #}
            <li>
                {% if page_of_blogs.has_previous %}
                    <a href="?page={{ page_of_blogs.previous_page_number }}" aria-label="Previous">
                        <span aria-hidden="true">&laquo;</span>
                    </a>
                {% else %}
                    <span aria-hidden="true">&laquo;</span>
                {% endif %}
            </li>
            {# 頁碼 #}
            {% for page_num in page_range %}
                {# 當(dāng)前頁高亮 #}
                {% if page_num == page_of_blogs.number %}
                    <li class="active"><a href="?page={{ page_num }}">{{ page_num }}</a></li>
                {% else %}
                    {# 省略頁碼 #}
                    {% if page_num == '...' %}
                        <li><a href="#">{{ page_num }}</a></li>
                    {% else %}
                        <li><a href="?page={{ page_num }}">{{ page_num }}</a></li>
                    {% endif %}
                {% endif %}
            {% endfor %}
            {# 下一頁 #}
            <li>
                {% if page_of_blogs.has_next %}
                    <a href="?page={{ page_of_blogs.next_page_number }}" aria-label="Next">
                        <span aria-hidden="true">&raquo;</span>
                    </a>
                {% else %}
                    <span aria-hidden="true">&raquo;</span>
                {% endif %}
            </li>
        </ul>
    </nav>
    <p> 一共有篇{{ blog_all_list|length }}博客疾捍,當(dāng)前是{{ page_of_blogs.number }}頁拌屏,一共有{{ page_of_blogs.paginator.num_pages }}頁</p>
</div>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市饮亏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖褒纲,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異疾嗅,居然都是意外死亡外厂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門代承,熙熙樓的掌柜王于貴愁眉苦臉地迎上來汁蝶,“玉大人,你說我怎么就攤上這事论悴∫疵蓿” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵膀估,是天一觀的道長幔亥。 經(jīng)常有香客問我,道長察纯,這世上最難降的妖魔是什么帕棉? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮饼记,結(jié)果婚禮上香伴,老公的妹妹穿的比我還像新娘。我一直安慰自己具则,他們只是感情好即纲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著博肋,像睡著了一般低斋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匪凡,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天膊畴,我揣著相機(jī)與錄音,去河邊找鬼病游。 笑死巴比,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播轻绞,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼采记,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了政勃?” 一聲冷哼從身側(cè)響起唧龄,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奸远,沒想到半個(gè)月后既棺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡懒叛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年丸冕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薛窥。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胖烛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出诅迷,到底是詐尸還是另有隱情佩番,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布罢杉,位于F島的核電站趟畏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏滩租。R本人自食惡果不足惜赋秀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望律想。 院中可真熱鬧猎莲,春花似錦、人聲如沸蜘欲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姥份。三九已至,卻和暖如春年碘,著一層夾襖步出監(jiān)牢的瞬間澈歉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國打工屿衅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留埃难,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像涡尘,于是被迫代替她去往敵國和親忍弛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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