天天看點

Django快速分頁在後端(視圖函數中)在前端(html模闆中)

分頁
在web開發中,對大量的商品進行分頁顯示,是常見的需求,django對分頁直接提供了現成的函數,讓我們的開發更為快速便捷...
動圖_Django快速分頁

在後端(視圖函數中)

from django.shortcuts import render
from .models import ShowMyComputer
# 引入方法
from django.core.paginator import Paginator
# Create your views here.

def show(request, page_id):

    # 擷取需要分頁的對象集合
    all_goods = ShowMyComputer.objects.all()

    # 建立分頁對象
    paginator = Paginator(all_goods, 3)

    # 根據目前頁碼,确定傳回的資料
    current_page = paginator.page(page_id)

    # 保證前端取到的"頁數"為整型
    page_id = int(page_id)


    return render(request, 'computer/list.html', locals())

           

在前端(html模闆中)

<body>
    {# 展示目前頁面的資料 #}
    {% for goods in current_page %}
    <div class="my_goods">

        <div class="goods_image">       
            ![圖檔占位](/static/{{ goods.goods_image }})
        </div>
        
        <br>
        
        <div class="goods_name">{{ goods.goods_name }}</div>

    </div>

    {% endfor %}


    <div class="page_num">

    {# 判斷'上一頁'是否存在,如果存在則保留`上一頁`标簽 ,反之則不顯示`上一頁`标簽 #}
    {% if current_page.has_previous %}

        <a href="{% url 'computer:show' current_page.previous_page_number %}">上一頁</a>

    {% endif %}


    {# 确定分頁數量 #}

    {% for index in paginator.page_range %}

        {# 如果頁碼與目前頁面相符,則添加紅色背景 #}
    {% if page_id == index %}
        <a href= "{% url 'computer:show' index %}" style="background-color: red" >{{ index }}</a>
        {# 如果頁面與目前頁面不符,則正常顯示 #}
    {% else %}
        <a href="{% url 'computer:show' index %}" >{{ index }}</a>
    {% endif %}

    {% endfor %}

    {# 判斷'下一頁'是否存在,如果存在則保留`下一頁`标簽 ,反之則不顯示`下一頁`标簽 #}
    {% if current_page.has_next%}

        <a href="{% url 'computer:show' current_page.next_page_number %}">下一頁</a>

    {% endif %}


    </div>

</body>
           
文章涉及到的資源我會通過百度網盤分享,為便于管理,資源整合到一張獨立的文章,連結如下: http://www.jianshu.com/p/4f28e1ae08b1