Django 模型操作-分頁(七)

一、連接MySql數據庫

? 1、先安裝MySQL

? 2、再安裝MySQL驅動
? ? ? 使用mysqlclient
? ? ? pip install mysqlclient

如果上面的命令安裝失敗, 則嘗試使用國內豆瓣源安裝:
?pip install -i https://pypi.douban.com/simple mysqlclient

二、在settings.py中配置

?

三、 book表的數據

四、手動分頁和自動分頁

1、函數視圖

? ??手動分頁

#手動分頁
def get_pageinfo(request,page=1):# 每頁顯示6條數據per_page = 6# 分頁分析# 數據[1,2,3,45,..100]# 第幾頁    數據范圍   數據下標范圍     切片#  page=1   1-6        0~5         [0:6]   =>   (1-1)*6  1*6#  page=2   7-12       6~11        [6:12]  =>   (2-1)*6  2*6#  page=3   13-18      12~17       [12:18] =>   (3-1)*6  3*6#   ..................# 獲取所有的數據all=Book.objects.all()# 數據分頁books=all[(page-1)*per_page:page*per_page]# 總個數count=Book.objects.count()# 總頁數total_page=math.ceil(count/per_page)#數據范圍 1,2,3,4..list_page=range(1,total_page+1)return render(request=request, template_name='show.html', context={'books':books,'listpages':list_page})

?2、show.html頁面?

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style type="text/css">#ul li {width: 30%;list-style: none;padding: 10px 0px;border: 1px solid cadetblue;}#pp li {display: inline;}.ff{font-weight: bolder;}</style>
</head>
<body>
<div><h1>手動分頁圖書數據</h1><ul id="ul"><li class="ff">編號----書名------價格------日期-------出版社編號</li>{% for bk in books %}<li>{{ bk.id }} -- {{ bk.title }} -- {{ bk.price}}-- {{ bk.pub_date| date:"Y-m-d" }}-- {{ bk.publish_id}}</li>{% endfor %}</ul><div><ul id="pp">{% for pa in listpages %}<li><a href="{% url 'pages' pa %}"><button>第{{ pa }}頁</button></a></li>{% endfor %}</ul></div>
</div>
</body>
</html>

? 3、運行效果?

?

? (2) 自動分頁?

? ? 源碼:Paginator類

? ? ?1、函數視圖

#自動分頁
def auto_pageinfo(request,page=1):# 每頁顯示6條數據per_page = 6# 獲取所有的數據all=Book.objects.all()#使用分頁器分頁from django.core.paginator import Paginatorpaginator=Paginator(all,per_page)#獲取第幾頁的數據books=paginator.page(page)# 頁碼范圍#數據范圍 1,2,3,4..list_page=paginator.page_rangereturn render(request=request, template_name='autoshow.html', context={'books':books,'listpages':list_page})

? ? 2、aushow.html頁面?


<div><h1>自動分頁圖書數據</h1><ul id="ul"><li class="ff">編號----書名------價格------日期-------出版社編號</li>{% for bk in books %}<li>{{ bk.id }} -- {{ bk.title }} -- {{ bk.price}}-- {{ bk.pub_date| date:"Y-m-d" }}-- {{ bk.publish_id}}</li>{% endfor %}</ul><div><ul id="pp">{% for pa in listpages %}<li><a href="{% url 'pages2' pa %}"><button>第{{ pa }}頁</button></a></li>{% endfor %}</ul></div>
</div>

3、配置url路徑

from django.urls import pathfrom books import viewsurlpatterns = [path('pages/<int:page>', views.get_pageinfo,name='pages'),  #別名pagespath('pages2/<int:page>', views.auto_pageinfo,name='pages2'),  #別名pages2path('pages3/', views.auto_pageinfo2,name='pages3'),  #別名pages3]

4、運行效果

五、使用分頁插件Django-pure-pagination

1、安裝

pip install django-pure-pagination

2、在settings.py中注冊

INSTALLED_APPS = [.....,'pure_pagination',
]

3、在settings.py中配置分頁切割方式

# 分頁配置
PAGINATION_SETTINGS = {'PAGE_RANGE_DISPLAYED':2, # 當前頁相鄰顯示幾個號碼頁'MARGIN_PAGES_DISPLAYED': 1,  # 首尾各顯示幾個號碼頁'SHOW_FIRST_PAGE_WHEN_INVALID': True,
}

4、函數視圖

#分頁插件
def auto_pageinfo2(request,page=1):# 每頁顯示5條數據per_page =3# 獲取所有的數據all=Book.objects.all()#使用分頁器分頁from django.core.paginator import Paginatorpaginator=Paginator(all,per_page)try:page_number = request.GET.get('page', page)except PageNotAnInteger:page_number = 1#獲取第幾頁的數據books=paginator.page(page_number)# 頁碼范圍# 數據范圍 1,2,3,4..list_page = paginator.page_range# books.paginator.pagesreturn render(request, 'list.html', {'page_obj': books,"pages":list_page})

5、模板

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style type="text/css">#ul li {width: 30%;list-style: none;padding: 10px 0px;border: 1px solid cadetblue;}a {padding: 5px 10px;color: white;background-color: darkgray;margin: 1px; /*設置標簽 a 之間的間隔*/text-decoration: none; /*去除頁碼數字下面的下劃線*/}a:hover {color: black;background: cyan;}.current {color: black;}</style>
</head>
<body>
<div><h1>插件分頁圖書數據</h1><ul id="ul"><li class="ff">編號----書名------價格------日期-------出版社編號</li>{% for bk in page_obj %}<li>{{ bk.id }} -- {{ bk.title }}-- {{ bk.price }}-- {{ bk.pub_date| date:"Y-m-d" }}-- {{ bk.publish_id }}</li>{% endfor %}</ul>
</div>{#Django-pure-pagination基礎渲染方法#}
{#<div id="pagination">#}
{#    {{ page_obj.render }}#}
{#</div>#}<div class="pagination"><span class="step-links">{% if page_obj.has_previous %}<a href="?page={{ page_obj.previous_page_number }}"> << </a>{% else %}<a href=""> << </a>{% endif %}<span class="current">
{#            Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.#}{% for page in pages %}{% if page %}{% if page == page_obj.number %}<a href="?page={{ page }}"><span class="current">{{ page }}</span></a>{% else %}<a href="?page={{ page }}" class="page">{{ page }}</a>{% endif %}{% else %}<a href="">...</a>{% endif %}{% endfor %}</span>{% if page_obj.has_next %}<a href="?page={{ page_obj.next_page_number }}"> >> </a>{% else %}<a href=""> >> </a>{% endif %}</span>
</div></body>
</html>

6、運行效果

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213615.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213615.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213615.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android系統啟動過程-uBoot+Kernel+Android

摘要&#xff1a;本文是參考大量網上資源在結合自己查看源代碼總結出來的&#xff0c;讓自己同時也讓大家加深對Android系統啟動過程有一個更加深入的了解&#xff01;再次強調&#xff0c;本文的大多數功勞應歸功于那些原創者們&#xff0c;同時一些必要的參考鏈接我會一一附上…

1009 說反話

給定一句英語&#xff0c;要求你編寫程序&#xff0c;將句中所有單詞的順序顛倒輸出。 輸入格式&#xff1a; 測試輸入包含一個測試用例&#xff0c;在一行內給出總長度不超過 80 的字符串。字符串由若干單詞和若干空格組成&#xff0c;其中單詞是由英文字母&#xff08;大小…

【機器學習實訓項目】黑色星期五畫像分析

目錄 前言 一、項目概述 1.1 項目簡介 1.2 項目背景 1.3 項目目標 二、數據分析 2.1 導入庫 2.2 數據基本信息 三、畫像分析 3.1 畫像1&#xff1a;消費金額Top10 3.2 畫像2&#xff1a;高頻消費Top10 3.3 畫像3&#xff1a;人均消費金額Top10 3.4 畫像4&#xff1a;男女消費對…

創投課程第四期 | Web3一級市場投資框架的演變及投資人能力框架的構成

協會邀請了來自Zonff Partners的合伙人——Colin&#xff0c;作為VC創投課程第4期的嘉賓&#xff0c;在北京時間12月9日(周六)下午14:00 PM-15:00 PM于螞蟻鏈科技產業創新中心進行線下分享&#xff0c;屆時將與所有對Web3投資、創業心懷熱忱的朋友們共同探討《WEB3一級市場投資…

雙向鏈表(數據結構與算法)

???????????????? ???????????????? &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

程序啟動時訪問了未初始化的類指針引發內存訪問違例導致程序崩潰的問題排查

目錄 1、問題說明 2、使用Windbg動態調試去初步分析 3、使用Windbg詳細分析 4、最后 VC常用功能開發匯總&#xff08;專欄文章列表&#xff0c;歡迎訂閱&#xff0c;持續更新...&#xff09;https://blog.csdn.net/chenlycly/article/details/124272585C軟件異常排查從入門…

20、XSS——XSS跨站腳本

文章目錄 一、XSS漏洞概述1.1 XSS簡介 二、XSS漏洞分類2.1 反射型XSS2.2 存儲型XSS2.3 DOM型XSS 三、XSS payload構造以及變形3.1 XSS payload構造3.2 XSS payload 變形 一、XSS漏洞概述 1.1 XSS簡介 XSS被稱為跨站腳本攻擊&#xff08;Cross-site scripting&#xff09;&…

linux dpdk 介紹

DPDK&#xff08;Data Plane Development Kit&#xff09;是一個由英特爾發起的開源項目&#xff0c;旨在提供一個快速、高性能的數據平面開發工具包&#xff0c;使網絡應用能夠在通用處理器上實現網絡功能虛擬化&#xff08;NFV&#xff09;和軟件定義網絡&#xff08;SDN&…

k8s volumes and data

Overview 傳統上&#xff0c;容器引擎(Container Engine)不提供比容器壽命更長的存儲。由于容器被認為是瞬態(transient)的&#xff0c;這可能會導致數據丟失或復雜的外部存儲選項。Kubernetes卷共享 Pod 生命周期&#xff0c;而不是其中的容器。如果容器終止&#xff0c;數據…

排序的簡單理解(上)

1. 排序的概念及引用 1.1 排序的概念 排序&#xff1a;所謂排序&#xff0c;就是使一串記錄&#xff0c;按照其中的某個或某些關鍵字的大小&#xff0c;遞增或遞減的排列起來的操作&#xff08;按照我們的需求能夠有序的將數據信息排列起來&#xff09;。 穩定性&#xff1a;假…

TeeChart.NET 2023.11.17 Crack

.NET 的 TeeChart 圖表控件提供了一個出色的通用組件套件&#xff0c;可滿足無數的圖表需求&#xff0c;也針對重要的垂直領域&#xff0c;例如金融、科學和統計領域。 數據可視化 數十種完全可定制的交互式圖表類型、地圖和儀表指示器&#xff0c;以及完整的功能集&#xff0c…

醫療設備智慧管理助力醫院提質增效,阿基米德amp;健康界實踐分享

近日&#xff0c;蘇州阿基米德網絡科技有限公司與醫療領域頭部級媒體健康界&#xff0c;聯合舉辦“數智為擎 提質增效——醫學裝備智慧管理創新發展論壇”的直播活動。 直播現場&#xff0c;來自上海交通大學醫學院附屬同仁醫院、中華醫學會航海醫學分會、蘇州阿基米德的專家們…

統信UOS_麒麟KYLINOS上使用命令行配置NTP服務器

原文鏈接&#xff1a;統信UOS/麒麟KYLINOS上使用命令行配置NTP hello&#xff0c;大家好啊&#xff0c;今天我要給大家介紹的是在統信UOS/麒麟KYLINOS操作系統上使用命令行配置NTP&#xff08;Network Time Protocol&#xff09;服務器的方法。在內網環境下&#xff0c;許多企業…

13、C++異常處理

13、c異常處理 拋出異常捕獲異常未拋出異常時的流程拋出異常時的流程捕獲異常匹配順序異常說明異常處理構造函數中的異常析構函數中的異常標準庫異常類 拋出異常 throw 異常對象可以拋出基本類型的對象&#xff0c;如:throw -1;throw "內存分配失敗!";也可以拋出類類…

AVP對縱向控制ESP(Ibooster)的需求規范

目錄 1. 版本記錄... 3 2. 文檔范圍和控制... 4 2.1 目的/范圍... 4 2.2 文檔沖突... 4 2.3 文檔授權... 4 2.4 文檔更改控制... 4 3. 功能概述... 5 4. 系統架構... 6 5. 主要安全目標... 7 5.1 …

FreeSSL申請免費域名證書

本文詳細講解如何申請免費證書&#xff0c;需要先準備好域名&#xff0c;將服務器IP和域名綁定。 1、注冊FreeSSL賬號 網址&#xff1a; https://freessl.org/ 2、申請流程 登錄后首頁輸入域名&#xff0c;然后點擊Create certificate&#xff0c;跳轉到證書申請頁面。 或者…

Pytorch深度強化學習1-6:詳解時序差分強化學習(SARSA、Q-Learning算法)

目錄 0 專欄介紹1 時序差分強化學習2 策略評估原理3 策略改進原理3.1 SARSA算法3.2 Q-Learning算法 0 專欄介紹 本專欄重點介紹強化學習技術的數學原理&#xff0c;并且采用Pytorch框架對常見的強化學習算法、案例進行實現&#xff0c;幫助讀者理解并快速上手開發。同時&#…

老人的數目

給你一個下標從 0 開始的字符串 details 。details 中每個元素都是一位乘客的信息&#xff0c;信息用長度為 15 的字符串表示&#xff0c;表示方式如下&#xff1a; 前十個字符是乘客的手機號碼。接下來的一個字符是乘客的性別。接下來兩個字符是乘客的年齡。最后兩個字符是乘…

QGIS 加載在線XYZ地圖圖層

QGIS 加載在線XYZ地圖圖層 定義并添加必應XYZ圖層 Go to Layer > Add Layer > Add XYZ Layer…Click NewName as BingMaps(as you wish)URL as http://ecn.t3.tiles.virtualearth.net/tiles/a{q}.jpeg?g1click OkSelect XYZ Connections as Bing Maps(Which you creat…

PR自動剪輯視頻工具AI智能剪輯插件AutoPod

推薦一款可以提高剪輯效率&#xff0c;節約時間成本的AI人工智能自動剪輯視頻制作工具pr插件Autopod&#xff0c;輔助你更快地完成視頻內容的編輯工作。 Autopod 插件是一款應用于 Adobe Premiere Pro 軟件的插件&#xff0c;用于自動剪輯。該插件能夠識別和處理視頻和音頻素材…