溫馨提示×

溫馨提示×

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

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

怎么在python中使用Django框架實現(xiàn)在web端分頁呈現(xiàn)數(shù)據(jù)

發(fā)布時間:2021-04-13 16:16:02 來源:億速云 閱讀:170 作者:Leah 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)怎么在python中使用Django框架實現(xiàn)在web端分頁呈現(xiàn)數(shù)據(jù),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

首先介紹Django中的paginator類。paginator是Django中提供的可以實現(xiàn)管理數(shù)據(jù)分頁的類。

from django.core import paginator

下面是本文用到的paginator中的屬性和方法。

Paginator對象

1. 構(gòu)造:Paginator(列表,int):返回分頁的整體對象。
2. page_range:返回頁碼列表 [1,2,3,4…]
3. page(num):返回num頁的數(shù)據(jù)內(nèi)容

Page對象

1. 構(gòu)造:Paginator對象的page()方法返回Page對象。
2. number:返回當(dāng)前頁的序號。
3. paginator:當(dāng)前page對象相關(guān)的Paginator對象。page.paginator相當(dāng)于Paginator對象。

A. 構(gòu)造url。

#---urls.py------
from django.conf.urls import url
import views
urlpatterns = [
 # 這個url構(gòu)造在根目錄下
 # 定義為'info/數(shù)字'是為了傳一個頁面序號為參數(shù)給視圖函數(shù)
 # 視圖函數(shù)接收到這個數(shù)字為參數(shù)后,就可以調(diào)用對應(yīng)頁的數(shù)據(jù)呈現(xiàn)
 # 例如我們輸入www.xxx.com/info/3,視圖函數(shù)就會接收到(request,3)兩個參數(shù)
 url(r'^info/(\d*)$',views.info),
]
#---------

B. 編寫視圖函數(shù)的邏輯。

#---views.py---
from django.shortcuts import render
# 這里的lcoation是定義的模型類,包含有若干條地名數(shù)據(jù)
from models import location
from django.core import paginator

# 視圖函數(shù)
# 同樣,index是url傳進(jìn)來的頁面序號
def info(request,index):
 # 獲取所有的的數(shù)據(jù),list是一個列表,包含有所有數(shù)據(jù)對應(yīng)的實例對象
 list = location.objects.all()
 # 使用Paginator方法返回一個分頁的對象
 # 這個對象包括所有數(shù)據(jù),分頁的情況
 pag = paginator.Paginator(list,3)
 # 使用此判斷語句是為了在用戶跳轉(zhuǎn)www.xxx.com/info/時也能訪問第一頁
 if index=='':
  index=1
 # 返回指定(index)頁的數(shù)據(jù),用于呈現(xiàn)在指定頁上
 page = pag.page(index)
 # 構(gòu)造上下文,以便html文件中能調(diào)用對應(yīng)頁的數(shù)據(jù)
 context = {
  'page':page,
 }
 return render(request,'booktest/info.html',context)
#---------

C. 模板文件。

#---info.html------
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
</head>
<body>
<ul>
 # 視圖函數(shù)傳進(jìn)來的上下文page是指定頁的數(shù)據(jù)
 {% for each in page %}
 # 遍歷顯示每條數(shù)據(jù)
 <li>{{ each.location_name }}</li>
 {% endfor %}
</ul>
<hr>
 # 這里是重點
 # 同樣還是需要調(diào)用視圖函數(shù)傳進(jìn)來的page頁的頁碼
 # page.paginator得到page的paginator對象
 # page.pageinator.page_range page_range可以返回頁面列表[1,2,3,4...]
 # 遍歷頁面列表
 {% for index in page.paginator.page_range %}
  # page.number是視圖函數(shù)現(xiàn)在呈現(xiàn)頁的頁碼
  # 這個頁碼不需要做超鏈接
  {% if index == page.number %}
  <span>{{ index }}</span>
  {% else %}
  # 生成每頁超鏈接
  # 點擊每一個數(shù)字對應(yīng)的鏈接就是'/info/點擊的頁數(shù)'
  # 這樣在url解析的時候,又可以把這一頁的編號傳給視圖函數(shù)
  # 視圖函數(shù)根據(jù)這個頁碼呈現(xiàn)對應(yīng)的內(nèi)容
   <a href="/info/{{index}}" rel="external nofollow" >{{ index }}</a>
  {% endif %}
 {% endfor %}

</body>
</html>
#---------

關(guān)于怎么在python中使用Django框架實現(xiàn)在web端分頁呈現(xiàn)數(shù)據(jù)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI