溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用Django怎么實現分頁功能

發布時間:2021-05-22 17:21:13 來源:億速云 閱讀:284 作者:Leah 欄目:開發技術

本篇文章為大家展示了使用Django怎么實現分頁功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Django提供了一個新的類來幫助你管理分頁數據,這個類存放在django/core/paginator.py.它可以接收列表、元組或其它可迭代的對象。

class Paginator(object):
 
  def __init__(self, object_list, per_page, orphans=0,
         allow_empty_first_page=True):
    self.object_list = object_list
    self.per_page = int(per_page)
    self.orphans = int(orphans)
    self.allow_empty_first_page = allow_empty_first_page
 
……

基本語法實例

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
 
import os
 
from django.core.paginator import Paginator
objects = ['john','paul','george','ringo','lucy','meiry','checy','wind','flow','rain']<br>
p = Paginator(objects,3) # 3條數據為一頁,實例化分頁對象
print p.count # 10 對象總共10個元素
print p.num_pages # 4 對象可分4頁
print p.page_range # xrange(1, 5) 對象頁的可迭代范圍
 
page1 = p.page(1) # 取對象的第一分頁對象
print page1.object_list # 第一分頁對象的元素列表['john', 'paul', 'george']
print page1.number # 第一分頁對象的當前頁值 1
 
page2 = p.page(2) # 取對象的第二分頁對象
print page2.object_list # 第二分頁對象的元素列表 ['ringo', 'lucy', 'meiry']
print page2.number # 第二分頁對象的當前頁碼值 2
 
print page1.has_previous() # 第一分頁對象是否有前一頁 False
print page1.has_other_pages() # 第一分頁對象是否有其它頁 True
 
print page2.has_previous() # 第二分頁對象是否有前一頁 True
print page2.has_next() # 第二分頁對象是否有下一頁 True
print page2.next_page_number() # 第二分頁對象下一頁碼的值 3
print page2.previous_page_number() # 第二分頁對象的上一頁碼值 1
print page2.start_index() # 第二分頁對象的元素開始索引 4
print page2.end_index() # 第2分頁對象的元素結束索引 6

 官方解釋在視圖中的應用

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render
 
def listing(request):
  contact_list = Contacts.objects.all()
  paginator = Paginator(contact_list, 25) # Show 25 contacts per page
 
  page = request.GET.get('page')
  try:
    contacts = paginator.page(page)
  except PageNotAnInteger:
    # If page is not an integer, deliver first page.
    contacts = paginator.page(1)
  except EmptyPage:
    # If page is out of range (e.g. 9999), deliver last page of results.
    contacts = paginator.page(paginator.num_pages)
 
  return render(request, 'list.html', {'contacts': contacts})

在template的html模板中的應用

{% for contact in contacts %}
  {# Each "contact" is a Contact model object. #}
  {{ contact.full_name|upper }}<br />
  ...
{% endfor %}
 
<div class="pagination">
  <span class="step-links">
    {% if contacts.has_previous %}
      <a href="?page={{ contacts.previous_page_number }}">previous</a>
    {% endif %}
 
    <span class="current">
      Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
    </span>
 
    {% if contacts.has_next %}
      <a href="?page={{ contacts.next_page_number }}">next</a>
    {% endif %}
  </span>
</div>

舉例講述分頁功能的使用目的說明

  現要實現如下功能

    1、網頁上顯示分頁數據,3條數據為一頁

    2、有分頁導航功能,被選中頁高亮顯示

    3、如果沒有上一頁或下一頁,則不出現箭頭導航

    4、如果最后一頁的數據少于2條,合并到上一頁

效果圖

  圖1:

使用Django怎么實現分頁功能

   圖2:

使用Django怎么實現分頁功能

 視圖定義

使用Django怎么實現分頁功能

  定義templates

 使用Django怎么實現分頁功能

 分頁功能優化

目標:

  1、在template中的html模板中使用自定義函數

  2、不管有多少分頁,頁面上最多顯示5頁

基礎知識

Django的模板語言包含了各種各樣的內置標簽和過濾器來滿足你的應用需求,不過有時候你也會發現你的需要的功能不在內置的功能中,這時候你可以通過Python語言自定義標簽和過濾器來擴展模板引擎,然后在你的模板中使用{% load %}來加載使用它們。

在你的app下創建templatetags包,在其下創建python腳本來定義你的標簽和過濾器,如:

polls/
  __init__.py
  models.py
  templatetags/
    __init__.py
    poll_extras.py
  views.py

然后在你的模板中使用

{% load poll_extras %}

項目實戰

自定義過濾器和標簽

使用Django怎么實現分頁功能

在模板中引用

使用Django怎么實現分頁功能

上述內容就是使用Django怎么實現分頁功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女