DRF之註冊響應分頁元件
阿新 • • 發佈:2018-12-11
註冊器
註冊器的作用就是以後我們不用自己手動的一條條的敲路徑了,它可以幫助哦們直接去找對應的路由,不用傳參了,知道這一點就可以了,不多說還是,上程式碼例項
第一步:匯入模組
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