分頁

分頁

分頁庫Paginator的基本語法

django提供了分頁的工具,存在于django.core中

Paginator: 數(shù)據(jù)分頁工具
Page:具體的某一頁

Paginator:

對象創(chuàng)建: Paginator(數(shù)據(jù)集,每一頁數(shù)據(jù))

屬性:

count  計(jì)算和

num_pages: 頁面總和

page_range: 頁碼列表,從1開始

方法:

page(頁碼):獲取的一個page對象,頁碼不存在則拋出invalidPage的異常

常見錯誤

invalidPage:page()傳遞無效頁碼

PageNotAnInteger:Page()傳遞的不是整數(shù)

Empty:page()傳遞的值有效,但是沒有數(shù)據(jù)

page對象

page:

對象獲取,通過Paginator的page()方法獲得

屬性:

object_list: 當(dāng)前頁面上所有的數(shù)據(jù)對象
number: 當(dāng)前頁的頁碼值
paginator: 當(dāng)前page關(guān)聯(lián)的Paginator對象

方法:

has_next()   判斷是否有下一頁
has_previous():  判斷是否有上一頁
has_other_pages():  判斷是否有上一頁或下一頁
next_page_number();  返回下一頁的頁碼
previous_page_number(): 返回上一頁的頁碼
len(): 返回當(dāng)前也的數(shù)據(jù)的個數(shù)

Paginator對象和Page對象的關(guān)系

如下有學(xué)生表,學(xué)生表中有25條數(shù)據(jù),通過分頁,每一個6條數(shù)據(jù),去實(shí)現(xiàn)分頁的功能

Paginator對象和Page對象的關(guān)系

實(shí)例

視圖函數(shù)中的使用

from django.core.paginator import Paginator

def users(request):
    if request.method == 'GET':
        # 使用切片完成分頁功能
        # sql:offset limit,select * from users offset 3 limit 3
        page_number = int(request.GET.get('page', 1))
        # users = Users.objects.all()[3 * (page_number - 1):3 * page_number]
        users = Users.objects.all()
        # 使用Paginator分頁
        paginator = Paginator(users, 3)
        # 獲取某一頁的信息
        page = paginator.page(page_number)

        return render(request, 'users.html', {'page': page})

模板中的使用使用


{% extends 'base.html' %}

{% block title %}
    用戶管理界面
{% endblock %}

{% block content %}
    <P>已有賬號</P>
    <table>
        <thead>
            <th>id</th>
            <th>用戶名</th>
            <th>創(chuàng)建時間</th>
        </thead>
        <tbody>
            {% for u in page %}
                <tr>
                    <td>{{ u.id }}</td>
                    <td>{{ u.username }}</td>
                    <td>{{ u.create_time | date:'Y-m-d' }}</td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
<p>當(dāng)前頁:{{ page.number }}</p>
<p>頁碼:
    {% for i in page.paginator.page_range %}
        <a href="{% url 'users:users' %}?page={{i}}">{{i}}</a>
    {% endfor %}
</p>
<p>
    {% if page.has_previous %}
    <a href="{% url 'users:users' %}?page={{ page.previous_page_number}}">上一頁</a>
    {% endif %}
    {% if page.has_next %}
    <a href="{% url 'users:users' %}?page={{ page.next_page_number}}">下一頁</a>
    {% endif %}
</p>

{% endblock %}
分頁.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 當(dāng)頁面因需要展示的數(shù)據(jù)條目過多,導(dǎo)致無法在一個頁面全部顯示。這時,頁面經(jīng)常會采用分頁形式進(jìn)行展示,然后每頁顯示 2...
    猴哥愛讀書閱讀 33,774評論 4 20
  • 分頁 REST framework 包含對可定制分頁樣式的支持。這使你可以將較大的結(jié)果集分成單獨(dú)的數(shù)據(jù)頁面。分頁 ...
    入間閱讀 1,387評論 0 2
  • 方法一:使用pure_pagination進(jìn)行分頁 1. pure_pagination介紹 pure_pagin...
    Jlan閱讀 1,189評論 0 7
  • Django 中已經(jīng)寫好了分頁實(shí)現(xiàn)的邏輯,我們在做分頁的時候,僅需要通過倆個對象Paginator 和 Page ...
    鳥它鳥閱讀 321評論 0 0
  • 排序、過濾、分頁、分組 Contoso 大學(xué)示例 Web 應(yīng)用程序演示如何使用實(shí)體框架(EF)Core 2.0 和...
    程序員長春閱讀 2,275評論 0 5

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