DjangoRest View介绍

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.

备注:

  1. 使用GenericAPIView需要自己定义['get', 'post', 'put', 'patch', 'delete']方法,来处理对应的http请求.
  2. 应该始终使用get_queryset()获取查询结果,而不是直接访问self.queryset,因为self.queryset只被评估一次作为缓存,为所有后续请求使用。
  3. GenericAPIView提供的默认方法,可以根据需要override.直接在class中重写即可.

具体的View

Concrete view classes that provide method handlers by composing the mixin classes with the base view.

  1. CreateAPIView(mixins.CreateModelMixin, GenericAPIView)

    实现了post方法,直接创建model的实例.

    只需要提供querysetserializer_class,就可以直接使用.

  2. ListAPIView(mixins.ListModelMixin, GenericAPIView)

    实现了get方法,获取model列表

    只需要提供querysetserializer_class,就可以直接使用.

    需要其他扩展功能需要按需设置GenericAPIView的其他属性.

  3. RetrieveAPIView(mixins.RetrieveModelMixin, GenericAPIView)

    实现了get方法,获取model实例.

    只需要提供querysetserializer_class,就可以直接使用.

  4. DestroyAPIView(mixins.DestroyModelMixin, GenericAPIView)

    实现了delete方法,删除model实例.

    只需要提供queryset,就可以直接使用.

  5. UpdateAPIView(mixins.UpdateModelMixin, GenericAPIView)

    实现了putpatch方法,更新model实例.

    只需要提供querysetserializer_class,就可以直接使用.

  6. ListCreateAPIView(mixins.ListModelMixin, mixins.CreateModelMixin, GenericAPIView)

    ListAPIViewCreateAPIView的组合.

    实现了getpost方法,用于获取model列表和创建model的实例.

  7. RetrieveUpdateAPIView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, GenericAPIView)

    RetrieveAPIViewUpdateAPIView的组合.

    实现了getputpatch方法.

  8. RetrieveDestroyAPIView(mixins.RetrieveModelMixin, mixins.DestroyModelMixin, GenericAPIView)

    RetrieveAPIViewDestroyAPIView的组合.

    实现了getdelete方法.

  9. RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, GenericAPIView)

    RetrieveAPIViewUpdateAPIViewDestroyAPIView的组合.

    实现了getputpatchdelete方法.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章