django實(shí)現(xiàn)分頁的方法
本文實(shí)例講述了django實(shí)現(xiàn)分頁的方法。分享給大家供大家參考。具體如下:
Python代碼如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Create your views here.
from django.shortcuts import render_to_response
from winlog.log_dj.models import Winlog
from django.core.paginator import Paginator,InvalidPage,EmptyPage,PageNotAnInteger
def index(request):
after_range_num = 5
before_range_num = 4
try:
page=int(request.GET.get('page','1'))
if page < 1:
page=1
except ValueError:
page=1
winlog_list = Winlog.objects.all().order_by('-id')
paginator = Paginator(winlog_list, 10)
try:
winloglist = paginator.page(page)
except (EmptyPage,InvalidPage,PageNotAnInteger):
winloglist = paginator.page(1)
if page >= after_range_num:
page_range = paginator.page_range[page-after_range_num:page+before_range_num]
else:
page_range = paginator.page_range[0:int(page)+before_range_num]
return render_to_response('log_dj/index.html', locals())
HTML頁面如下:
{% for winlog in winloglist.object_list %}
{{ winlog.date }}|{{ winlog.time }} <br />
{% endfor %}
{% if winloglist.has_previous %}
<a href="?page={{ winloglist.previous_page_number }}" title="下一頁">上一頁</a>&
nbsp;
{% endif %}
{% for p in page_range %}
{% ifequal p winloglist.number %}
<span>{{p}}</span>
{% else %}
<a href="?page={{p}}" title="第{{p}}頁">{{p}}</a>
{% endifequal %}
{% endfor %}
{% if winloglist.has_next %}
<a href="?page={{ winloglist.next_page_number }}" title="下一頁">下一頁</a> 
;
{% endif %}
<!-- 第 {{ userList.number }} 頁 共 {{ userList.paginator.num_pages }} 頁-->
Paginator對(duì)象:
類Paginator:
class Paginator(object_list,per_page,orphans=0,allow_empty_first_page=True)
必須提供的參數(shù):
object_list:一個(gè)列表或元組,元素是django QuerySet或是包含count()或__len__()方法的可切片對(duì)象。
per_page:包含在一頁中最多的條目數(shù)量。
可選參數(shù):
orphans:在最后一頁中充許的最少條目數(shù)量,默認(rèn)是0.當(dāng)最后一頁條目數(shù)量小于或等于orphans時(shí),這些條目加到本頁的上一頁中。
allow_empty_first_page:是否充許第一頁為空。如設(shè)為False且object_list為空,則拋出EmptyPage異常。
方法:
Paginator.page(number):返回一個(gè)Page對(duì)象,序號(hào)是始于1.如給出的頁號(hào)不存在,拋出InvalidPage異常。
屬性:
Paginator.num_pages:頁面總頁數(shù)
Paginator.page_range:頁面數(shù)的范圍,始于1,如[1,2,3,4]。
InvalidPage異常:
如要求的頁面無效或頁面中沒有對(duì)象,page()拋出InvalidPage異常。
PageNotAnInterger:當(dāng)提供給page()的數(shù)不是整數(shù)是拋出該異常。
EmptyPage:當(dāng)提供給page()的數(shù)是一個(gè)有效數(shù),但在該頁沒有對(duì)象存在時(shí),拋出該異常。
Page對(duì)象:
class Page(object_list,number,paginator):
一般不手工創(chuàng)建Pages,可以使用Paginator.page().
方法:
Page.has_next():如有下一頁則返回True
Page.has_previous():如有上一頁則返回True
Page.has_other_pages():如有上一頁或下一頁返回True
Page.next_page_number():返回下一頁的頁碼。不管下一頁是否存在都返回。
Page.previous_page_number():返回上一頁的頁碼。不管上一頁是否存在都返回。
Page.start_index():返回當(dāng)前頁面中第一個(gè)對(duì)象的序號(hào),序號(hào)始于1.例如:將一個(gè)包含5個(gè)對(duì)象的列表分成每頁2個(gè)對(duì)象,則第二頁的start_index()返回3.
Page.end_index():返回當(dāng)前頁面中最一個(gè)對(duì)象的序號(hào)。
屬性:
Page.object_list:當(dāng)前頁面中所有的對(duì)象
Page.number:當(dāng)前頁面的頁碼,始于1
Page.paginator:頁面相關(guān)的Pageinator對(duì)象。
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
- Python Django實(shí)現(xiàn)layui風(fēng)格+django分頁功能的例子
- Django分頁查詢并返回jsons數(shù)據(jù)(中文亂碼解決方法)
- Django實(shí)現(xiàn)快速分頁的方法實(shí)例
- Django實(shí)現(xiàn)分頁功能
- Django自定義分頁與bootstrap分頁結(jié)合
- Django原生sql也能使用Paginator分頁的示例代碼
- Django實(shí)現(xiàn)網(wǎng)頁分頁功能
- Django實(shí)現(xiàn)簡單分頁功能的方法詳解
- Django框架實(shí)現(xiàn)分頁顯示內(nèi)容的方法詳解
- Django實(shí)現(xiàn)簡單的分頁功能
相關(guān)文章
Python利用PyPDF2庫實(shí)現(xiàn)輕松提取PDF文本
ython中的PyPDF2庫是一個(gè)非常有用的工具,無論您是需要分析PDF文檔中的內(nèi)容還是需要在文檔中搜索特定的信息,PyPDF2都可以幫助您輕松實(shí)現(xiàn)這些任務(wù),下面我們就來學(xué)習(xí)一下如何利用PyPDF2提取PDF文本吧2023-09-09
python 讀寫csv文件方式(創(chuàng)建,追加,覆蓋)
這篇文章主要介紹了python 讀寫csv文件方式(創(chuàng)建,追加,覆蓋),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
Python Pandas學(xué)習(xí)之Pandas數(shù)據(jù)結(jié)構(gòu)詳解
Pandas中一共有三種數(shù)據(jù)結(jié)構(gòu),分別為:Series、DataFrame和MultiIndex(老版本中叫Panel )。其中Series是一維數(shù)據(jù)結(jié)構(gòu),DataFrame是二維的表格型數(shù)據(jù)結(jié)構(gòu),MultiIndex是三維的數(shù)據(jù)結(jié)構(gòu)。本文將詳細(xì)為大家講解這三個(gè)數(shù)據(jù)結(jié)構(gòu),需要的可以參考一下2022-02-02
編寫Python爬蟲抓取豆瓣電影TOP100及用戶頭像的方法
這篇文章主要介紹了編寫Python爬蟲抓取豆瓣電影TOP100及用戶頭像的方法,用到了Python的urllib和urllib2模塊,需要的朋友可以參考下2016-01-01
python cs架構(gòu)實(shí)現(xiàn)簡單文件傳輸
這篇文章主要為大家詳細(xì)介紹了python cs架構(gòu)實(shí)現(xiàn)簡單文件傳輸,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
python中Requests請(qǐng)求的安裝與常見用法
Requests是一常用的http請(qǐng)求庫,它使用python語言編寫,可以方便地發(fā)送http請(qǐng)求,以及方便地處理響應(yīng)結(jié)果,下面這篇文章主要給大家介紹了關(guān)于python中Requests請(qǐng)求的安裝與常見用法的相關(guān)資料,需要的朋友可以參考下2022-07-07

