DRF框架常用的幾個類用法介紹

2021-09-01 11:45:29 字數 3374 閱讀 1909

1.apiview是rest framework提供的所有檢視的基類,繼承自django的view;

2.支援定義的屬性:

authentication_classes 列表或元祖,身份認證類

permissoin_classes 列表或元祖,許可權檢查類

throttle_classes 列表或元祖,流量控制類

3.在apiview中仍以常規的類檢視定義方法來實現get() 、post() 或者其他請求方式的方法。

class

booklistview

(apiview)

:def

get(self, request)

: books = bookinfo.objects.

all(

) serializer = bookinfoserializer(books, many=

true

)return response(serializer.data)

1.繼承自apiview,主要增加了操作序列化器和資料庫查詢的方法

2.提供的關於序列化器使用的屬性與方法:

①屬性:

serializer_class 指明檢視使用的序列化器

②方法:

get_serializer_class(self) 返回序列化器類,預設返回serializer_class

get_serializer(self, args, *kwargs) 返回序列化器物件

3.提供的關於資料庫查詢的屬性與方法:

①屬性:

queryset 指明使用的資料查詢集

②方法:

get_queryset(self) 返回檢視使用的查詢集

get_object(self) 返回詳情檢視所需的模型類資料物件

class

bookdetailview

(genericapiview)

: queryset = bookinfo.objects.

all(

) serializer_class = bookinfoserializer

defget(self, request, pk)

:# get_object()方法根據pk引數查詢queryset中的資料物件

book = self.get_object(

) serializer = self.get_serializer(book)

return response(serializer.data)

這五個擴充套件類需要搭配genericapiview父類,因為五個擴充套件類的實現需要呼叫genericapiview提供的序列化器與資料庫查詢的方法

在此僅介紹listmodelmixin的用法,其他幾個模擬

class

booklistview

(listmodelmixin, genericapiview)

: queryset = bookinfo.objects.

all(

) serializer_class = bookinfoserializer

defget(self, request)

:# list的方法封裝了查詢集,序列化,返回序列化的過程,可以直接呼叫即可

return self.

list

(request)

# listmodelmixin原始碼參考

class

listmodelmixin

(object):

""" list a queryset.

"""deflist

(self, request,

*args,

**kwargs)

:# 過濾

queryset = self.filter_queryset(self.get_queryset())

# 分頁

page = self.paginate_queryset(queryset)

if page is

notnone

: serializer = self.get_serializer(page, many=

true

)return self.get_paginated_response(serializer.data)

# 序列化

serializer = self.get_serializer(queryset, many=

true

)return response(serializer.data)

日常用的較多,五個子類繼承了各自的擴充套件類和genericapiview,並進一步封裝了get/post/put/delete方法,所以繼承擴充套件類的子類時不用再定義get/post/put/delete方法

class

bookview

(listapiview,createapiview)

: serializer_class = bookserialziers # 指定序列化器

queryset = bookinfo.objects.

all(

)# 所有查詢集

# listapiview原始碼參考

class

listapiview

(mixins.listmodelmixin,genericapiview)

:"""

concrete view for listing a queryset.

"""defget

(self, request,

*args,

**kwargs)

:return self.

list

(request,

*args,

**kwargs)

# createapiview原始碼參考

class

createapiview

(mixins.createmodelmixin,genericapiview)

:"""

concrete view for creating a model instance.

"""defpost

(self, request,

*args,

**kwargs)

:return self.create(request,

*args,

**kwargs)

DRF框架的安裝配置及特點介紹

安裝 pip install djangorestframework配置 1 在settings中註冊 rest framework 2 在settings中自定義drf配置 注 drf配置查詢順序,自定義settings的rest framework配置字典 drf預設settings的defau...

五 Foundation框架中常用類的介紹

nsstring temp nsstring alloc initwithstring test nslog d temp retaincount temp release nslog d temp retaincount 你猜nslog會輸出什麼,是我們想要的testnsstring麼?有興趣的可...

Foundation框架中常用類的介紹 小結1

有興趣的可以在xcode中建立乙個控制台程式,把上面的 複製進去,可以看到確實是我們預期的結果。學習過objective c記憶體管理的肯定就會有疑問了,temp已經釋放了,為什麼str中還能和temp中的字串拼接那?首先還是先看段 眼見為實,可以說明一切。假如你有兩個類person和animal那...