欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Django實(shí)現(xiàn)分頁功能

 更新時(shí)間:2018年07月02日 08:59:22   作者:_世紀(jì)末的魔術(shù)師_  
今天給大家分享的是如何使用Django實(shí)現(xiàn)簡單分頁功能的方法,主要依托于Django提供的一個(gè)新的類Paginator來實(shí)現(xiàn)的

Django提供了一個(gè)新的類來幫助你管理分頁數(shù)據(jù),這個(gè)類存放在django/core/paginator.py.它可以接收列表、元組或其它可迭代的對象。

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
 
……

 

基本語法實(shí)例

#!/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條數(shù)據(jù)為一頁,實(shí)例化分頁對象
print p.count # 10 對象總共10個(gè)元素
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 # 第一分頁對象的當(dāng)前頁值 1
 
page2 = p.page(2) # 取對象的第二分頁對象
print page2.object_list # 第二分頁對象的元素列表 ['ringo', 'lucy', 'meiry']
print page2.number # 第二分頁對象的當(dāng)前頁碼值 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分頁對象的元素結(jié)束索引 6

 官方解釋在視圖中的應(yīng)用

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模板中的應(yīng)用

{% 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>

舉例講述分頁功能的使用目的說明

  現(xiàn)要實(shí)現(xiàn)如下功能

    1、網(wǎng)頁上顯示分頁數(shù)據(jù),3條數(shù)據(jù)為一頁

    2、有分頁導(dǎo)航功能,被選中頁高亮顯示

    3、如果沒有上一頁或下一頁,則不出現(xiàn)箭頭導(dǎo)航

    4、如果最后一頁的數(shù)據(jù)少于2條,合并到上一頁

效果圖

  圖1:

   圖2:

 視圖定義

  定義templates

 

 分頁功能優(yōu)化

目標(biāo):

  1、在template中的html模板中使用自定義函數(shù)

  2、不管有多少分頁,頁面上最多顯示5頁

 

基礎(chǔ)知識(shí)

Django的模板語言包含了各種各樣的內(nèi)置標(biāo)簽和過濾器來滿足你的應(yīng)用需求,不過有時(shí)候你也會(huì)發(fā)現(xiàn)你的需要的功能不在內(nèi)置的功能中,這時(shí)候你可以通過Python語言自定義標(biāo)簽和過濾器來擴(kuò)展模板引擎,然后在你的模板中使用{% load %}來加載使用它們。

在你的app下創(chuàng)建templatetags包,在其下創(chuàng)建python腳本來定義你的標(biāo)簽和過濾器,如:

polls/
  __init__.py
  models.py
  templatetags/
    __init__.py
    poll_extras.py
  views.py

然后在你的模板中使用

{% load poll_extras %}

項(xiàng)目實(shí)戰(zhàn)

自定義過濾器和標(biāo)簽

在模板中引用

效果圖:

https://github.com/kongzhagen/python/tree/master/Django

相關(guān)文章

  • Python實(shí)現(xiàn)排序算法、查找算法和圖遍歷算法實(shí)例

    Python實(shí)現(xiàn)排序算法、查找算法和圖遍歷算法實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)排序算法、查找算法和圖遍歷算法實(shí)例,排序算法、查找算法和圖遍歷算法是計(jì)算機(jī)科學(xué)中常見且重要的算法。它們在數(shù)據(jù)處理、搜索和圖結(jié)構(gòu)等領(lǐng)域發(fā)揮著關(guān)鍵作用,需要的朋友可以參考下
    2023-08-08
  • Python函數(shù)基礎(chǔ)

    Python函數(shù)基礎(chǔ)

    這篇文章主要從函數(shù)開始介紹展開Python函數(shù),以最基本的函數(shù)定義方法描述,需要的朋友可以參考下文簡單的介紹
    2021-08-08
  • 詳解python中TCP協(xié)議中的粘包問題

    詳解python中TCP協(xié)議中的粘包問題

    這篇文章主要介紹了python中TCP協(xié)議中的粘包問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • python開發(fā)游戲的前期準(zhǔn)備

    python開發(fā)游戲的前期準(zhǔn)備

    在本篇文章中我們給大家分享了關(guān)于python開發(fā)游戲的前期準(zhǔn)備以及用到的工具等內(nèi)容,需要的朋友們跟著參考下。
    2019-05-05
  • python 多線程共享全局變量的優(yōu)劣

    python 多線程共享全局變量的優(yōu)劣

    這篇文章主要介紹了python 多線程共享全局變量的優(yōu)劣,幫助大家更好的理解和學(xué)習(xí)python多線程,感興趣的朋友可以了解下
    2020-09-09
  • 詳解Python中圖像邊緣檢測算法的實(shí)現(xiàn)

    詳解Python中圖像邊緣檢測算法的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了python中圖像邊緣檢測算法的原理及實(shí)現(xiàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Python解釋執(zhí)行原理分析

    Python解釋執(zhí)行原理分析

    這篇文章主要介紹了Python解釋執(zhí)行原理,有助于讀者深入理解Python運(yùn)行機(jī)制,需要的朋友可以參考下
    2014-08-08
  • 詳解Python map函數(shù)及Python map()函數(shù)的用法

    詳解Python map函數(shù)及Python map()函數(shù)的用法

    map() 會(huì)根據(jù)提供的函數(shù)對指定序列做映射。下面通過本文給大家介紹Python map函數(shù)及Python map()函數(shù)的用法,需要的朋友參考下吧
    2017-11-11
  • 簡單介紹Python中的len()函數(shù)的使用

    簡單介紹Python中的len()函數(shù)的使用

    這篇文章主要簡單介紹了Python中的len()函數(shù)的使用,包括在四種情況下的使用小例子,是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-04-04
  • python實(shí)現(xiàn)書法碑帖圖片分割

    python實(shí)現(xiàn)書法碑帖圖片分割

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)書法碑帖圖片分割,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03

最新評論