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