1. 程式人生 > >DRF之註冊響應分頁元件

DRF之註冊響應分頁元件

註冊器

  註冊器的作用就是以後我們不用自己手動的一條條的敲路徑了,它可以幫助哦們直接去找對應的路由,不用傳參了,知道這一點就可以了,不多說還是,上程式碼例項

  

第一步:匯入模組
from django.urls import re_path,include
from rest_framework import routers
第二步:例項化一個router物件 router
= DefaultRouter()
第三步:將需要自動生成url的介面註冊到router中 router.register(r
'books', views.BookView) 第四步:生成url urlpatterns
= [ re_path(r'^', include('router.urls')), ]
#這樣,就相當於我們前幾天寫的各種get,post,put...請求的路由了

響應

  其實,剛接觸響應器的時候我也搞不清楚這個響應器有什麼用,畢竟它太簡單了,剛開始接觸就是響應json資料嘛,經過一段時間的反覆思考,得到了一個結論,這其中包含了各種看原始碼之類的複雜且幔帳的過程,奧,原來我們使用DRF的Response類來將資料響應給客戶端,不管是POSTMAN還是瀏覽器,都能瀏覽到經過格式化後的漂亮的資料,DRF是怎麼做的呢?其實就是通過響應器元件,現在知道了嘛?

分頁器

  分頁器,可以說開發環境中用得比較多一些的作用,django中給我們封裝了分頁功能,不過過程中有些繁瑣,需要我們寫一些程式碼,但是DRF中分頁,可以說是簡單的版本,咱們可以對比一些

  

第一步:匯入模組

from rest_framework.pagination import PageNumberPagination
第二步:獲取資料

books = Book.objects.all()
第三步:建立分頁器

paginater = PageNumberPagination()
第四步:開始分頁

paged_books = paginater.paginate_queryset(books, request)
第五步:將分頁後的資料進行序列化

serialized_data = BookSerializer(paged_books, many=True)
第六步:返回資料

return Response(serialized_data.data)




#我們的主要邏輯

from rest_framework.pagination import PageNumberPagination


class MyPagination(PageNumberPagination):
    page_size = 3
    page_query_param = 'page'
    page_size_query_param = 'size'
    max_page_size = 5

#page_size:用來控制每頁顯示多少條資料(全域性引數名為#PAGE_SIZE);
#page_query_param:用來提供直接訪問某頁的資料;
#page_size_query_param:臨時調整當前顯示多少條資料
#max_page_size:控制page_size_query_param引數能調整的最大條數

  現在,經過匯入把分頁類在我們BookView中指定

    

class BookView(ModelViewSet):
    # 第二步:指定認證類
    pagination_class = app_paginates.MyPagination

    queryset = Book.objects.all()
    serializer_class = BookSerializer