class APIView(View)
屬性 | 值類型 | 作用 | 是否必須 |
---|---|---|---|
permission_classes | tuple | 權限控制 | 否 |
方法 | 作用 |
---|---|
check_permissions(self, request) | Check if the request should be permitted |
check_object_permissions(self, request, obj) | Check if the request should be permitted for a given object |
class GenericAPIView(views.APIView)
Base class for all other generic views.
屬性 | 值類型 | 作用 | 是否必須 |
---|---|---|---|
queryset | QuerySet | get_queryset() 使用 |
是 |
serializer_class | serializer | get_serializer_class() 使用 |
是 |
lookup_field | string | If you want to use object lookups other than pk, set ‘lookup_field’ | 否 |
lookup_url_kwarg | string | url中變量 | 否 |
filter_backends | tuple | The filter backend classes to use for queryset filtering | 否 |
pagination_class | class | The style to use for queryset pagination | 否 |
方法 | 作用 |
---|---|
get_queryset(self) | Get the list of items for this view. Defaults to using self.queryset |
get_object(self) | Returns the object the view is displaying. 使用此方法會調用self.check_object_permissions(self.request, obj) |
get_serializer(self, *args, **kwargs) | Return the serializer instance that should be used for validating and deserializing input, and for serializing output. |
filter_queryset(self, queryset) | Given a queryset, filter it with whichever filter backend is in use |
paginate_queryset(self, queryset) | Return a single page of results, or None if pagination is disabled. |
備註:
- 使用GenericAPIView需要自己定義
['get', 'post', 'put', 'patch', 'delete']
方法,來處理對應的http請求. - 應該始終使用
get_queryset()
獲取查詢結果,而不是直接訪問self.queryset
,因爲self.queryset
只被評估一次作爲緩存,爲所有後續請求使用。 GenericAPIView
提供的默認方法,可以根據需要override
.直接在class中重寫即可.
具體的View
Concrete view classes that provide method handlers by composing the mixin classes with the base view.
-
CreateAPIView(mixins.CreateModelMixin, GenericAPIView)
實現了
post
方法,直接創建model的實例.只需要提供
queryset
和serializer_class
,就可以直接使用. -
ListAPIView(mixins.ListModelMixin, GenericAPIView)
實現了
get
方法,獲取model列表只需要提供
queryset
和serializer_class
,就可以直接使用.需要其他擴展功能需要按需設置
GenericAPIView
的其他屬性. -
RetrieveAPIView(mixins.RetrieveModelMixin, GenericAPIView)
實現了
get
方法,獲取model實例.只需要提供
queryset
和serializer_class
,就可以直接使用. -
DestroyAPIView(mixins.DestroyModelMixin, GenericAPIView)
實現了
delete
方法,刪除model實例.只需要提供
queryset
,就可以直接使用. -
UpdateAPIView(mixins.UpdateModelMixin, GenericAPIView)
實現了
put
和patch
方法,更新model實例.只需要提供
queryset
和serializer_class
,就可以直接使用. -
ListCreateAPIView(mixins.ListModelMixin, mixins.CreateModelMixin, GenericAPIView)
ListAPIView
和CreateAPIView
的組合.實現了
get
和post
方法,用於獲取model列表和創建model的實例. -
RetrieveUpdateAPIView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, GenericAPIView)
RetrieveAPIView
和UpdateAPIView
的組合.實現了
get
、put
和patch
方法. -
RetrieveDestroyAPIView(mixins.RetrieveModelMixin, mixins.DestroyModelMixin, GenericAPIView)
RetrieveAPIView
和DestroyAPIView
的組合.實現了
get
和delete
方法. -
RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, GenericAPIView)
RetrieveAPIView
、UpdateAPIView
和DestroyAPIView
的組合.實現了
get
、put
、patch
和delete
方法.