DRF之註冊器響應器分頁器

2022-03-16 15:58:05 字數 2456 閱讀 8850

本文介紹的是drf的註冊器元件、響應器元件、分頁器元件。

引入通過前面幾節課的學習,我們已經大致的將drf的主要元件都學習過了,包括使用方式和原始碼剖析,對於原始碼剖析,我們不僅僅需要知道drf是怎樣做的,而且需要知道它為什麼這麼多,這才是我們看原始碼的目的,要學習優秀的人的思路和解決問題的方式。學習他人優秀的編碼風格,能夠糾正我們寫程式時的壞習慣,也能開闊我們的思路和眼界。

今天我們將要學習drf的其他幾個元件,這幾個元件相對前面的元件來講,比較簡單,我們只學會其使用方式即可,不再深入研究其原始碼了。

今日概要

知識點複習回顧

今日詳細

下面我們正式開始今天的學習。

url註冊器

第一步:匯入模組

1

from rest_framework import routers

第二步:例項化乙個router物件

1

router = defaultrouter()

第三步:將需要自動生成url的介面註冊到router中

1

router.register(r'books', views.bookview)

第四步:生成url

123

urlpatterns = [

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

]

響應器之前我們使用drf的response類來將資料響應給客戶端,不管是postman還是瀏覽器,都能瀏覽到經過格式化後的漂亮的資料,drf是怎麼做的呢?其實就是通過響應器元件

如果我們不需要使用drf提供給瀏覽器的格式化後的資料,只需要禁止該響應方式即可:

123

4567

8

from rest_framework.renderers import jsonrenderer

class bookview(modelviewset):

renderer_classes = [jsonrenderer]

throttle_classes = [ratethrottle]

queryset = book.objects.all()

serializer_class = bookserializer

這樣,瀏覽器再次訪問,接收到的就是普通的json格式資料,而不是經過drf格式化後的資料,renderer_classes的查詢邏輯與之前的解析器等等元件是完全一樣的。

分頁器為了伺服器效能考慮,也為了使用者體驗,我們不應該一次將所有的資料從資料庫中查詢出來,返回給客戶端瀏覽器,如果資料量非常大,這對於伺服器來講,可以說是效能災難,而對於使用者來講,載入速度將會非常慢。

第一步:匯入模組

1

from rest_framework.pagination import pagenumberpagination

第二步:獲取資料

1

books = book.objects.all()

第三步:建立分頁器

1

paginater = pagenumberpagination()

第四步:開始分頁

1

paged_books = paginater.paginate_queryset(books, request)

第五步:將分頁後的資料進行序列化

1

serialized_data = bookserializer(paged_books, many=true)

第六步:返回資料

1

return response(serialized_data.data)

幾個引數介紹

自定義分頁器

123

45

class mypagination(pagenumberpagination):

page_size = 2

page_query_param = 'p'

page_size_query_param = 'size'

max_page_size = 5

今日總結

**:pizzali

DRF之註冊器響應器分頁器

本文介紹的是drf的註冊器元件 響應器元件 分頁器元件。url註冊器 第一步 匯入模組 from rest framework import routers 第二步 例項化乙個router物件 router defaultrouter 第三步 將需要自動生成url的介面註冊到route中 route...

PHP註冊器模式

register.class.php 註冊器模式 全域性共享和交換物件 class register 獲取陣列的某個物件 public static function get alias 獲取陣列的全部物件 public static function getall 從陣列中移除指定的物件 publ...

php中註冊器模式類的使用

php中註冊器模式類的使用 註冊器讀寫類 registry.class.php 註冊器讀寫類 class registry extends arrayobject return self instance 儲存一項內容到登錄檔中 param string name 索引 param mixed va...