Django之分頁功能
Django之分頁功能
Django提供了一個新的類來幫助你管理分頁資料,這個類存放在django/core/paginator.py
.它可以接收列表、元組或其它可迭代的物件。
基本語法
1
2
3
4
5
6
7
8
9
10
|
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 …… |
基本語法例項
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#!/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 |
官方解釋
在檢視中的應用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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模板中的應用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
{% 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:
圖2:
檢視定義
定義templates
分頁功能優化
目標:
1、在template中的html模板中使用自定義函式
2、不管有多少分頁,頁面上最多顯示5頁
基礎知識
Django的模板語言包含了各種各樣的內建標籤和過濾器來滿足你的應用需求,不過有時候你也會發現你的需要的功能不在內建的功能中,這時候你可以通過Python語言自定義標籤和過濾器來擴充套件模板引擎,然後在你的模板中使用{% load %}來載入使用它們。
在你的app下建立templatetags包,在其下建立python指令碼來定義你的標籤和過濾器,如:
1
2
3
4
5
6
7
|
polls/ __init__.py models.py templatetags/ __init__.py poll_extras.py views.py |
然後在你的模板中使用
1
|
{%
load poll_extras %} |
專案實戰
自定義過濾器和標籤
在模板中引用
效果圖:
專案工程包路徑:
https://github.com/kongzhagen/python/tree/master/Django
相關文章
- Django框架之分頁器使用Django框架
- Django筆記三十四之分頁操作Django筆記
- Django學習筆記(12)——分頁功能Django筆記
- rest_framework之分頁器RESTFramework
- mysql之分頁方式瞭解MySql
- 效能優化之分頁查詢優化
- DRF之分頁類原始碼分析原始碼
- django分頁Django
- SpringBoot+Vue之分頁操作Spring BootVue
- pagehelper踩坑記之分頁亂套
- [Procedure]Oracle之分頁儲存過程Oracle儲存過程
- web程式設計之分頁顯示 (轉)Web程式設計
- Django的分頁Django
- Linux記憶體定址之分頁機制Linux記憶體
- Linux 記憶體定址之分頁機制Linux記憶體
- django send_mail功能DjangoAI
- 13.Django-分頁Django
- Django REST framework 分頁DjangoRESTFramework
- django--DRF分頁Django
- 3.Django分頁Django
- Python:Django的ListView超詳細用法(含分頁paginate功能)PythonDjangoView
- 在Django中使用Channels功能Django
- 整理:AWK的初級運用之分組計算功能
- jquery外掛合集之分頁外掛[表單和表格]jQuery
- django學習記錄--第一個網頁“hello django”Django網頁
- Django 前端BootCSS 實現分頁Django前端bootCSS
- django美化論壇頁面二Django
- django Paginator分頁模組Django
- django 分頁器 中介軟體Django
- django 自定義分頁與bootstrap分頁結合Djangoboot
- 基於django的視訊點播網站開發-step4-首頁功能Django網站
- 基於django的視訊點播網站開發-step5-詳情頁功能Django網站
- (Django)18.3建立網頁:學習筆記主頁Django網頁筆記
- 2-django進階之日誌功能Django
- Django實現傳送郵件功能Django
- Django 實現下載檔案功能Django
- Django REST framework API 指南(17):分頁DjangoRESTFrameworkAPI
- Django(68)drf分頁器的使用Django