django分页(两种办法)
生活随笔
收集整理的這篇文章主要介紹了
django分页(两种办法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下是分頁常用的方法
numbers=list(range(50))
page=Paginator(numbers,10)
print(page.num_pages)#獲取總共分了多少頁
print(page.count)#總共多少條數據page_1=page.get_page(1)#獲取第一頁數據
print('pake_1',page_1.number)#獲取當前所在分頁
print(page_1.has_next())#獲取有沒有下一頁
print(page_1.paginator.num_pages)#用當前頁面的對象,去獲取總共多少頁
print(page_1.paginator.count)#用當前頁面的對象,去獲取總共有多少條數據
print(page_1.has_previous())#獲取有沒有上一頁
print(page_1.has_other_pages())#獲取有沒有其他頁
# print(page_1.previous_page_number())#獲取上一頁的頁碼
print(page.get_page(2).object_list)#object_list返回的數據是一個list
。。。。。。。。。。。。。。。
前后端不分離的寫法:基礎條件是先建好數據庫,下邊這是我建的數據庫的樣式,怎么創建數據庫的表結構,看我之前的博客首先第一步需要先導入:? from django.core.paginator import Paginator #這個是處理分頁的,然后寫一個接口,返回給HTML文件,之后在html中調用這個接口里邊的方法
# todo 收到請求的時候,返回HTML文件 def index2(request):page = request.GET.get('page', 1) # 獲取第幾頁limit = request.GET.get('limit', 3) # 每頁有多少條數據all_count = models.Article.objects.all()paginator = Paginator(all_count, limit)page_1 = paginator.get_page(page)return render(request, 'index.html', locals())?
之后在HTML文件中,調用這個方法里邊的內容,這里邊每個方法是干啥用的,在文章上邊看就行
{% if page_1.has_other_pages %} <div class="text-center mt-2 mt-sm-1 mt-md-0 mb-3 f-16">{% if page_1.has_previous %}<a class="text-secondary" href="?page={{page_1.previous_page_number}}">上一頁</a>{%endif%}<span class="mx-2">第 {{page_1.number}} / {{ page_1.paginator.num_pages }} 頁</span>{% if page_1.has_next %}<a class="text-success" href="?page={{page_1.next_page_number}}">下一頁</a>{% endif %}</div> {% endif %}最后請求接口:http://IP:8999/index2/?page=1&limit=1? ? 這個里邊的page和limit是可以傳遞不同的參數的,樣式見下邊截圖
二、第二種做分頁的方法是前后端分離的寫法,前提條件和上邊一樣,但是這個是自己寫一個接口,然后前端在調用這個接口的數據
?首先導入:
from django.forms import model_to_dict #這個是轉字典的,要是不導入這個的話,接口返回json的時候會報錯然后,重新定義一個接口
def article_page(request):page = request.GET.get('page', 1) # 獲取第幾頁limit = request.GET.get('limit', 3) # 每頁有多少條數據all_count = models.Article.objects.all()paginator = Paginator(all_count, limit)page_1 = paginator.get_page(page)data_list=[]for i in page_1:mode_to=model_to_dict(i,exclude='img')#exclude這個是轉字典的時候去掉,哪個字段,就是不給哪個字段轉成字典data_list.append(mode_to)data = {'code': 0, "msg": '操作成功', "data": data_list, 'count': paginator.count}return HttpResponse(json.dumps(data))?
?
之后在postman上請求這個接口,然后這個接口就會返回分頁的信息了,具體要返回什么信息的話,的看你想要什么,接口返回的樣式
第二種,接口請求的樣式:
?
?
總結
以上是生活随笔為你收集整理的django分页(两种办法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 脚本实现,抓取屏幕内容
- 下一篇: OpenSSL心脏滴血检测