通用视图、APIView、视图集、模型视图集

Dav*_*ner 6 python django django-rest-framework

我刚刚开始学习 Django Rest Framework,现在了解了 4 个概念 APIView、Viewsets、Modelviewsets、GenericView。它们之间有什么区别,在开发 REST API 时使用它们哪个更有效?为什么?

Ali*_* Rn 16

没有标准,但您可以从这个简单的策略开始:

  1. 一类中的多个操作和基本 CRUD ---> ViewsetModelViewSetReadOnlyModelViewSet是最有用的)

  2. 对模型类的特定操作 --->通用视图( RetrieveModelMixin, ListAPIView, UpdateModelMixin, DestroyModelMixin, CreateModelMixin)

  3. 如果您想自己编写所有create, update, ... 方法,您可以在您的, , , ... 方法中使用APIView和编写它们( &之间的区别只是您不能在类中使用某些内置方法,例如, , ... )getpostputAPIViewGenericAPIViewquerysetserializer_class

  4. 如果您想从头开始编写所有内容,您可以将 api 编写为function base

  • 大多数时候,您必须使用通用视图编写 api,如果您学习了所有通用 APIView 最佳实践,它就会拥有如此强大的力量,您的意志将变得如此干净、可读和可扩展
  • 如果您有可以使用 Viewset 的简单模型,请购买

我在普通 API 中使用 GenericAPIView 并在自定义 API 中使用 APIView(就像管理面板中的大多数 API 一样)

  • @DavidGardner 你需要知道的是`Viewset`帮助我们更好地注册路由。当你使用 GenericView 并需要编写自定义函数时,需要考虑这些函数如何注册路由。 (2认同)
  • GenericAPIView 这个名字太令人困惑了。它表明在大多数情况下应该选择 APIView,并且只选择 GenericAPIView 来实现高度定制的东西,而情况恰恰相反(至少这是我对这个回复的理解)。 (2认同)