python Django框架實(shí)現(xiàn)web端分頁(yè)呈現(xiàn)數(shù)據(jù)
這里介紹使用python-Django框架來(lái)實(shí)現(xiàn)web端分頁(yè)呈現(xiàn)數(shù)據(jù),主要說(shuō)明對(duì)應(yīng)的views,urls,templates三個(gè)文件的編程邏輯的實(shí)現(xiàn)。
首先介紹Django中的paginator類(lèi)。paginator是Django中提供的可以實(shí)現(xiàn)管理數(shù)據(jù)分頁(yè)的類(lèi)。
from django.core import paginator
下面是本文用到的paginator中的屬性和方法。
Paginator對(duì)象
1. 構(gòu)造:Paginator(列表,int):返回分頁(yè)的整體對(duì)象。
2. page_range:返回頁(yè)碼列表 [1,2,3,4…]
3. page(num):返回num頁(yè)的數(shù)據(jù)內(nèi)容
Page對(duì)象
1. 構(gòu)造:Paginator對(duì)象的page()方法返回Page對(duì)象。
2. number:返回當(dāng)前頁(yè)的序號(hào)。
3. paginator:當(dāng)前page對(duì)象相關(guān)的Paginator對(duì)象。page.paginator相當(dāng)于Paginator對(duì)象。
A. 構(gòu)造url。
#---urls.py------ from django.conf.urls import url import views urlpatterns = [ # 這個(gè)url構(gòu)造在根目錄下 # 定義為'info/數(shù)字'是為了傳一個(gè)頁(yè)面序號(hào)為參數(shù)給視圖函數(shù) # 視圖函數(shù)接收到這個(gè)數(shù)字為參數(shù)后,就可以調(diào)用對(duì)應(yīng)頁(yè)的數(shù)據(jù)呈現(xiàn) # 例如我們輸入www.xxx.com/info/3,視圖函數(shù)就會(huì)接收到(request,3)兩個(gè)參數(shù) url(r'^info/(\d*)$',views.info), ] #---------
B. 編寫(xiě)視圖函數(shù)的邏輯。
#---views.py---
from django.shortcuts import render
# 這里的lcoation是定義的模型類(lèi),包含有若干條地名數(shù)據(jù)
from models import location
from django.core import paginator
# 視圖函數(shù)
# 同樣,index是url傳進(jìn)來(lái)的頁(yè)面序號(hào)
def info(request,index):
# 獲取所有的的數(shù)據(jù),list是一個(gè)列表,包含有所有數(shù)據(jù)對(duì)應(yīng)的實(shí)例對(duì)象
list = location.objects.all()
# 使用Paginator方法返回一個(gè)分頁(yè)的對(duì)象
# 這個(gè)對(duì)象包括所有數(shù)據(jù),分頁(yè)的情況
pag = paginator.Paginator(list,3)
# 使用此判斷語(yǔ)句是為了在用戶(hù)跳轉(zhuǎn)www.xxx.com/info/時(shí)也能訪問(wèn)第一頁(yè)
if index=='':
index=1
# 返回指定(index)頁(yè)的數(shù)據(jù),用于呈現(xiàn)在指定頁(yè)上
page = pag.page(index)
# 構(gòu)造上下文,以便html文件中能調(diào)用對(duì)應(yīng)頁(yè)的數(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)來(lái)的上下文page是指定頁(yè)的數(shù)據(jù)
{% for each in page %}
# 遍歷顯示每條數(shù)據(jù)
<li>{{ each.location_name }}</li>
{% endfor %}
</ul>
<hr>
# 這里是重點(diǎn)
# 同樣還是需要調(diào)用視圖函數(shù)傳進(jìn)來(lái)的page頁(yè)的頁(yè)碼
# page.paginator得到page的paginator對(duì)象
# page.pageinator.page_range page_range可以返回頁(yè)面列表[1,2,3,4...]
# 遍歷頁(yè)面列表
{% for index in page.paginator.page_range %}
# page.number是視圖函數(shù)現(xiàn)在呈現(xiàn)頁(yè)的頁(yè)碼
# 這個(gè)頁(yè)碼不需要做超鏈接
{% if index == page.number %}
<span>{{ index }}</span>
{% else %}
# 生成每頁(yè)超鏈接
# 點(diǎn)擊每一個(gè)數(shù)字對(duì)應(yīng)的鏈接就是'/info/點(diǎn)擊的頁(yè)數(shù)'
# 這樣在url解析的時(shí)候,又可以把這一頁(yè)的編號(hào)傳給視圖函數(shù)
# 視圖函數(shù)根據(jù)這個(gè)頁(yè)碼呈現(xiàn)對(duì)應(yīng)的內(nèi)容
<a href="/info/{{index}}" rel="external nofollow" >{{ index }}</a>
{% endif %}
{% endfor %}
</body>
</html>
#---------
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python+selenium對(duì)table表和分頁(yè)處理
- Python優(yōu)化列表接口進(jìn)行分頁(yè)示例實(shí)現(xiàn)
- python中Tkinter實(shí)現(xiàn)分頁(yè)標(biāo)簽的示例代碼
- 利用python對(duì)mysql表做全局模糊搜索并分頁(yè)實(shí)例
- python web框架中實(shí)現(xiàn)原生分頁(yè)
- Python Django實(shí)現(xiàn)layui風(fēng)格+django分頁(yè)功能的例子
- python 實(shí)現(xiàn)分頁(yè)顯示從es中獲取的數(shù)據(jù)方法
- python自定義分頁(yè)器的實(shí)現(xiàn)
相關(guān)文章
Python?xlwt工具使用詳解,生成excel欄位寬度可自適應(yīng)內(nèi)容長(zhǎng)度
這篇文章主要介紹了Python?xlwt工具使用詳解,生成excel欄位寬度可自適應(yīng)內(nèi)容長(zhǎng)度,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Python tkinter之ComboBox(下拉框)的使用簡(jiǎn)介
這篇文章主要介紹了Python tkinter之ComboBox(下拉框)的使用簡(jiǎn)介,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-02-02
python OpenCV學(xué)習(xí)筆記之繪制直方圖的方法
本篇文章主要介紹了python OpenCV學(xué)習(xí)筆記之繪制直方圖的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
Python多線(xiàn)程如何同時(shí)處理多個(gè)文件
這篇文章主要介紹了Python多線(xiàn)程如何同時(shí)處理多個(gè)文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
Starship定制shell提示符實(shí)現(xiàn)信息自由
這篇文章主要介紹了Starship定制shell提示符的實(shí)現(xiàn),讓你需要的所有信息觸手可及,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
django框架配置swagger以及自定義參數(shù)使用方式
這篇文章主要介紹了django框架配置swagger以及自定義參數(shù)使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
Python+wxPython實(shí)現(xiàn)一個(gè)簡(jiǎn)單的音樂(lè)播放器
這篇文章主要為大家詳細(xì)介紹了如何使用Python編程語(yǔ)言和wxPython模塊創(chuàng)建一個(gè)簡(jiǎn)單的音樂(lè)播放器,文中的示例代碼講解詳細(xì),感興趣的可以了解下2023-09-09
python中pip無(wú)法正確安裝或路徑出錯(cuò)的解決方案
這篇文章主要介紹了python中pip無(wú)法正確安裝或路徑出錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Python 函數(shù)繪圖及函數(shù)圖像微分與積分
今天小編就為大家分享一篇Python 函數(shù)繪圖及函數(shù)圖像微分與積分,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11

