DRF之註冊器響應器分頁器

2022-05-06 22:21:10 字數 1740 閱讀 4483

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

url註冊器

第一步:匯入模組

from rest_framework import routers

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

router = defaultrouter()

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

router.register(r'

books

', views.bookview)

第四步:生成url

urlpatterns =[

re_path(r'^

', include('

router.urls

')),

]

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

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

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的查詢邏輯與之前的解析器等等元件是完全一樣的。

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

第一步:匯入模組

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)

幾個引數介紹

自定義分頁器

class

mypagination(pagenumberpagination):

page_size = 2page_query_param = 'p'

page_size_query_param = '

size

'max_page_size = 5

DRF之註冊器響應器分頁器

本文介紹的是drf的註冊器元件 響應器元件 分頁器元件。引入通過前面幾節課的學習,我們已經大致的將drf的主要元件都學習過了,包括使用方式和原始碼剖析,對於原始碼剖析,我們不僅僅需要知道drf是怎樣做的,而且需要知道它為什麼這麼多,這才是我們看原始碼的目的,要學習優秀的人的思路和解決問題的方式。學習...

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...