1. 程式人生 > >DRF的註冊器,響應器和分頁器

DRF的註冊器,響應器和分頁器

一、DRF的註冊器

#匯入模組
from rest_framework import routers
#例項化一個router物件
router = routers.DefaultRouter()
#將需要自動生成url的介面註冊到router中
router.register("bookssss",views.BooksssView)
#生成url
urlpatterns = [
    re_path(r'^', include('router.urls')),
]

二、響應器

from rest_framework.renderers import JSONRenderer


class BookView(ModelViewSet): renderer_classes = [JSONRenderer] throttle_classes = [RateThrottle] queryset = Book.objects.all() serializer_class = BookSerializer

  瀏覽器再次訪問,接收到的就是普通的json格式資料,而不是經過DRF格式化後的資料

三、分頁器

 #匯入模組
 from rest_framework.pagination import PageNumberPagination
#獲取資料 books = Book.objects.all() #建立分頁器 paginater = app_paginates.MyPagination() #開始分頁 paged_books = paginater.paginate_queryset(books, request) #將分頁後的資料進行序列化 serialized_data = BookSerializer1(paged_books, many=True) #返回資料 return Response(serialized_data.data)
  • page_size:用來控制每頁顯示多少條資料(全域性引數名為PAGE_SIZE);
  • page_query_param:用來提供直接訪問某頁的資料;
  • page_size_query_param:臨時調整當前顯示多少條資料
  • max_page_size:控制page_size_query_param引數能調整的最大條數

自定義分頁

class MyPagination(PageNumberPagination):
    page_size = 2
    page_query_param = 'p'
    page_size_query_param = 'size'
    max_page_size = 5


class BooksssView(ModelViewSet):

    pagination_class = MyPagination
    queryset = Book.objects.all()
    serializer_class = BookSerializer1