最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django框架實(shí)現(xiàn)的分頁demo示例

 更新時(shí)間:2019年05月25日 09:47:32   作者:SpecYue  
這篇文章主要介紹了Django框架實(shí)現(xiàn)的分頁demo,結(jié)合實(shí)例形式分析了Django框架分頁的步驟、原理、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Django框架實(shí)現(xiàn)的分頁。分享給大家供大家參考,具體如下:

首先初始化model,建表

class Book(models.Model):
  name = models.CharField(max_length=20)
  def __str__(self):
    return self.name
  class Meta:
    db_table = 'books'

然后用pycharm的數(shù)據(jù)庫模塊可視化插入

分頁思路

url傳遞參數(shù)http://127.0.0.1:8000/books/?page=5比如這樣傳遞的參數(shù)就是5,就顯示第五頁,

1.get到所有圖書對(duì)象

2.計(jì)算好每一頁應(yīng)該有幾個(gè)數(shù)據(jù)

3.根據(jù)不同的page值傳遞

def books(request):
  #取從url傳遞的參數(shù)
  page_num = request.GET.get('page')
  page_num = int(page_num)
  start = (page_num-1)*5
  end = page_num*5
  #總頁碼數(shù)是?
  per_page = 5
  total = models.Book.objects.all().count()
  total,more =divmod(total,per_page)
  if more:
    total+=1
  all_books = models.Book.objects.all()[start:end]
  #自己拼接分頁的html代碼
  html_str_list = []
  for i in range(1,total):
    tmp = '<li><a href="/books/?page={}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{}</li>'.format(i,i)
    html_str_list.append(tmp)
  page_html = "".join(html_str_list)
  return render(request,'books.html',{'books':all_books,'total_page':total,'page_html':page_html})

拿到數(shù)據(jù)總量的值,每一頁的數(shù)量為5,如果有余數(shù)則total+1也就是增加一個(gè)頁面.

建立一個(gè)列表,去拼接a標(biāo)簽,最后傳遞給前端

前端

前端的樣式用到了boottrap,可以直接看文檔.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>書記列表</title>
  <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css" rel="external nofollow" >
</head>
<body>
<div class="container">
  <table class="table table-bordered">
    <thead>
    <tr>
      <th>序號(hào)</th>
      <th>id</th>
      <th>書名</th>
    </tr>
    </thead>
    <tbody>
    {% for book in books %}
      <tr>
        <td>{{ forloop.counter }}</td>
        <td>{{ book.id }}</td>
        <td>{{ book.name }}</td>
      </tr>
    {% endfor %}
    </tbody>
  </table>
<nav aria-label="Page navigation">
 <ul class="pagination">
  <li>
   <a href="#" rel="external nofollow" rel="external nofollow" aria-label="Previous">
    <span aria-hidden="true">&laquo;</span>
   </a>
  </li>
   {{ page_html|safe }}
  <li>
   <a href="#" rel="external nofollow" rel="external nofollow" aria-label="Next">
    <span aria-hidden="true">&raquo;</span>
   </a>
  </li>
 </ul>
</nav>
</div>
</body>
</html>

{{ page_html|safe }}

傳遞過來的page_html要用safe過濾器,不然無法轉(zhuǎn)移成html.

最終效果

分頁優(yōu)化

設(shè)置一個(gè)首頁一個(gè)尾頁,以及顯示局部的頁面

def books(request):
  # 取從url傳遞的參數(shù)
  page_num = request.GET.get('page')
  page_num = int(page_num)
  start = (page_num - 1) * 5
  end = page_num * 5
  # 總頁碼數(shù)是?
  per_page = 5
  # 頁面上總共展示多少頁面
  max_page = 11
  half_max_page = max_page // 2
  # 頁面上展示的頁面從哪開始
  page_start = page_num - half_max_page
  if page_start <= 1:
    page_start = 1
  total = models.Book.objects.all().count()
  # 頁面到哪結(jié)束
  page_end = page_num+half_max_page
  if page_end > total:
    page_end = total
    page_start = total - max_page
  total, more = divmod(total, per_page)
  if more:
    total += 1
  all_books = models.Book.objects.all()[start:end]
  # 自己拼接分頁的html代碼
  html_str_list = []
  html_str_list.append('<li><a href="/books/?page={}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >首頁</li>'.format(1,1))
  for i in range(page_start, page_end+1):
    tmp = '<li><a href="/books/?page={}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{}</li>'.format(i, i)
    html_str_list.append(tmp)
  html_str_list.append('<li><a href="/books/?page={}" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >最后一頁</li>'.format(total))
  page_html = "".join(html_str_list)
  return render(request, 'books.html', {'books': all_books, 'total_page': total, 'page_html': page_html})

希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python設(shè)計(jì)模式之解釋器模式原理與用法實(shí)例分析

    Python設(shè)計(jì)模式之解釋器模式原理與用法實(shí)例分析

    這篇文章主要介紹了Python設(shè)計(jì)模式之解釋器模式原理與用法,結(jié)合具體實(shí)例形式分析了解釋器模式的概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-01-01
  • Effective Python bytes 與 str 的區(qū)別

    Effective Python bytes 與 str 的區(qū)別

    這篇文章主要介紹了Effective Python bytes 與 str 的區(qū)別,Python 有兩種類型可以表示字符序列,下面圍繞Python bytes 與 str 的相關(guān)資料展開內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Python關(guān)鍵字之global與nonlocal

    Python關(guān)鍵字之global與nonlocal

    這篇文章主要為大家詳細(xì)介紹了Python關(guān)鍵字之global與nonlocal,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Sanic框架路由用法實(shí)例分析

    Sanic框架路由用法實(shí)例分析

    這篇文章主要介紹了Sanic框架路由用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Sanic框架路由的原理、請(qǐng)求參數(shù)、請(qǐng)求類型、重定向等相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • Python數(shù)字圖像處理代數(shù)之加減乘運(yùn)算

    Python數(shù)字圖像處理代數(shù)之加減乘運(yùn)算

    這篇文章主要介紹了Python數(shù)字圖像處理代數(shù)運(yùn)算,對(duì)其中的加、減、乘運(yùn)算分別作了詳細(xì)的講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • python中while和for的區(qū)別總結(jié)

    python中while和for的區(qū)別總結(jié)

    在本篇內(nèi)容里小編給大家分享的是關(guān)于python中while和for的區(qū)別以及相關(guān)知識(shí)點(diǎn),需要的朋友們可以學(xué)習(xí)下。
    2019-06-06
  • python在屏幕上點(diǎn)擊特定按鈕或圖像效果實(shí)例

    python在屏幕上點(diǎn)擊特定按鈕或圖像效果實(shí)例

    這篇文章主要給大家介紹了關(guān)于python在屏幕上點(diǎn)擊特定按鈕或圖像效果的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-09-09
  • Python使用ctypes調(diào)用C/C++的方法

    Python使用ctypes調(diào)用C/C++的方法

    今天小編就為大家分享一篇關(guān)于Python使用ctypes調(diào)用C/C++的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Python獲取指定日期是"星期幾"的6種方法

    Python獲取指定日期是"星期幾"的6種方法

    在Python進(jìn)行數(shù)據(jù)分析時(shí),按照日期進(jìn)行分組匯總也是被需要的,比如會(huì)找到銷量的周期性規(guī)律。本文將以2022-02-22為例,演示Python獲取指定日期是“星期幾”的6種方法,需要的可以參考一下
    2022-03-03
  • 感知器基礎(chǔ)原理及python實(shí)現(xiàn)過程詳解

    感知器基礎(chǔ)原理及python實(shí)現(xiàn)過程詳解

    這篇文章主要介紹了感知器基礎(chǔ)原理及python實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09

最新評(píng)論

光泽县| 弥勒县| 昔阳县| 噶尔县| 芜湖市| 揭东县| 大理市| 宝鸡市| 黄石市| 新邵县| 秦安县| 噶尔县| 收藏| 横峰县| 博野县| 黄梅县| 石景山区| 金秀| 施秉县| 调兵山市| 南昌市| 成武县| 公安县| 襄城县| 曲松县| 苗栗县| 三明市| 福州市| 杭锦旗| 凌源市| 吕梁市| 涿州市| 玛沁县| 泰宁县| 高雄市| 吉木乃县| 阿拉善左旗| 华池县| 枣阳市| 依兰县| 绥德县|