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> <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)--制作分页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: premiere cs6使用方法
- 下一篇: 屏幕真伪测试软件,如何检测电视屏幕真伪4