1. 程式人生 > >RestFramework之註冊器、響應器與分頁器

RestFramework之註冊器、響應器與分頁器

一、註冊器的說明與使用

  在我們編寫url時經常會因請求方式不同,而重複編寫某條url,而rest_framework中的註冊器幫我節省了很多程式碼

  下面介紹一下如何使用

# 利用註冊器來實現路由分發
from rest_framework import routers          # 匯入
router = routers.DefaultRouter()             # 例項化物件
router.register('book',views.BookView)      # 註冊

  還需要在urlpatterns中加入

re_path('^'
,include(router.urls))

  還有更多功能如直接檢視資料格式等等

二、響應器的使用

  響應器的作用就是讓瀏覽器不在返回django rest_framework做的那個網頁,而是直接返回資料

  

  使用方法:

    1.首先在views匯入  

from rest_framework.renderers import JSONRenderer  # 響應器

    2.在檢視類中設定,指定返回類

render_classes = [JsonRender]

  全都配置好之後再去訪問瀏覽器時就不會在返回頁面了

  

三、分頁器的使用

  分頁器的使用:

        - 匯入模組
            from rest_framework.pagination import PageNumberPagination
            
        - 獲取資料
            books = Book.objects.all()
                
        - 建立一個分頁器物件
            paginater = PageNumberPagination()
                
        - 開始分頁
            paged_books 
= paginater.paginate_queryset(books, request) - 開始序列化 serialized_books = BookSerializer(paged_books, many=True) - 返回資料 return Response(serialized_books.data)

  當我們用到檢視類中繼承ModelViewSet時需要自己編寫分頁類

  1.首先需要匯入模組

from rest_framework.pagination import PageNumberPagination

  2.編寫分頁器

class ThePagination(PageNumberPagination):
    page_size = 2                            # 每次獲取的數量
    page_query_param = 'page'               # url上的page引數
    page_size_query_param = 'size'          # 臨時要取資料的時候,可以在url上加的引數size
    max_page_size = 4                       # 限制最多可以獲取資料的多少

  3.最後還要在檢視類中加入

pagination_class = ThePagination    # 分頁器

  測試一下: