日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django(part44)--制作分页

發布時間:2023/12/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django(part44)--制作分页 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考


文章目錄

      • 制作分頁
        • 第一步
        • 第二步
        • 第三步


制作分頁


現在,我們以Blog里的mywebsite_bookstore項目為例,對圖書展示界面進行分頁操作。


第一步


對圖書展示界面中的35條圖書記錄,以每頁10條記錄為標準進行分頁操作,并在頁面下方展示頁面跳轉超鏈接。


在templates模板文件中,我們創建一個新的模板book.html:

<!doctype html> <html lang="en"> <head><meta charset="UTF-8"><title>圖書列表</title> </head> <body><a href="/bookstore/">進入書庫</a> &nbsp;<a href="/">返回首頁</a><table><tr><th>書名</th><th>出版社</th><th>定價</th><th>零售價</th><th>修改</th><th>刪除</th></tr>{% for abook in page %}<tr><td>{{ abook.title }}</td><td>{{ abook.pub_house }}</td><td>{{ abook.price }}</td><td>{{ abook.market_price }}</td>{% if request.session.userinfo %}<td><a href="/bookstore/mod/{{ abook.title }}">修改</a></td><td><a href="/bookstore/del/{{ abook.title }}">刪除</a></td>{% else %}<td colspan="2">您無權更改</td>{% endif %}</tr>{% endfor %}</table>{% for page_num in paginator.page_range %}<a href="{% url 'book' %}?page={{page_num}}">第{{page_num}}頁</a>{% endfor %} </body> </html>

在bookstore應用下的視圖模塊views.py中創建視圖函數book_page:

def book_page(request):bks = models.Book.objects.all()paginator = Paginator(bks, 10)print('對象的總個數是:', paginator.count)print('面碼范圍是:', paginator.page_range) #例如:range(1,5) 說明我們共有4頁print('總頁數是:', paginator.num_pages)print('每頁最大個數:', paginator.per_page)cur_page = request.GET.get('page', 1)#得到查詢參數,默認為第1頁page = paginator.page(cur_page)return render(request, 'book.html', locals())

在bookstore應用下的urls.py模塊中添加路由:

from django.urls import re_path from . import viewsurlpatterns = [re_path(r'^$', views.homepage),re_path(r'^add/$', views.new_book),re_path(r'^list_all/$', views.list_books),re_path(r'^mod/(\w+)/$', views.mod_book_info),re_path(r'^del/(\w+)/$', views.del_book),re_path(r'^book', views.book_page, name = "book"), ]

現在,我們向http://127.0.0.1:8000/bookstore/book發起請求:

可以看到頁面中顯示了10條圖書信息,且在頁面下方出現了4個頁面跳轉的超鏈接,現在,我們點擊第四頁:

可以看到,第四頁只有5條圖書信息,同時,URL中出現了查詢參數page,且查詢參數值為4


第二步


在模板中增加一個判斷,即對于當前頁(比如目前頁面在第2頁),我們不(對第2頁)添加跳轉超鏈接。

這里我們以百度為例:


我們對book.html模板進行修改(僅顯示超鏈接的代碼部分):

{% for page_num in paginator.page_range %} {% if page_num == page.number %} 第{{page_num}}頁 {% else %} <a href="{% url 'book' %}?page={{page_num}}">第{{page_num}}頁</a> {% endif %} {% endfor %}

我們向http://127.0.0.1:8000/bookstore/book發起請求:

可以看到當前頁(第一頁)處沒有超鏈接了。


第三步


增加上一頁和下一頁功能


我們對book.html模板進行修改(僅顯示超鏈接的代碼部分):

{# 分頁功能 #}{# 上一頁功能 #}{% if page.has_previous %}{# 如果有上一頁返回True #}<a href="{% url 'book' %}?page={{ page.previous_page_number }}">上一頁</a>{# 返回上一頁的頁碼,如果上一頁不存在,拋出InvalidPage異常 #}{% else %}上一頁{% endif %}{% for page_num in paginator.page_range %}{% if page_num == page.number %}第{{page_num}}頁{% else %}<a href="{% url 'book' %}?page={{page_num}}">第{{page_num}}頁</a>{% endif %}{% endfor %}{#下一頁功能#}{% if page.has_next %}{# 如果有下一頁返回True #}<a href="{% url 'book' %}?page={{ page.next_page_number }}">下一頁</a>{% else %}下一頁{% endif %}

我們向http://127.0.0.1:8000/bookstore/book發起請求:

成功!

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Django(part44)--制作分页的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。