【问题标题】:Generic Views vs APIView vs Viewsets, vs ModelViewsets通用视图 vs APIView vs Viewsets, vs ModelViewsets
【发布时间】:2021-08-01 05:22:49
【问题描述】:

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

【问题讨论】:

  • 顺便说一句,如果有帮助,您可以接受我的回答。

标签: python django django-rest-framework


【解决方案1】:

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

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

  2. 对模型类的具体操作 ---> Generic Views (RetrieveModelMixin, ListAPIView, UpdateModelMixin, DestroyModelMixin, CreateModelMixin)

  3. 如果您想自己编写所有createupdate、...方法,您可以使用APIView并将它们写入您的getpostput、...方法中( APIViewGenericAPIView 之间的区别只是你不能在你的类中使用一些内置方法,比如 queryset, serializer_class, ...)

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

  • 大多数情况下,您必须使用 Generic Views 编写 API,如果您学习了所有 Generic APIView 最佳实践,它的功能非常强大,您将变得如此干净、可读和可扩展
  • 如果您有可以使用 Viewset 的简单模型,请购买

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

【讨论】:

  • 在某些情况下,我们必须为此目的在模型之间建立关系,我们必须定义我们自己的 url 并编写我们的 on 函数 我在 Viewsets 中完成了这个 在通用视图中编写也是如此我自己的功能?
  • @DavidGardner 你需要知道的是Viewset 可以帮助我们更好地注册路由。当你使用GenericView并且需要编写自定义函数时,需要考虑这些函数如何注册路由。
  • GenericAPIView 这个名字好混乱。它建议在大多数情况下应该使用 APIView,并且只使用 GenericAPIView 来实现高度定制的东西,而情况恰恰相反(至少这是我对这个回复的理解)。
猜你喜欢
  • 2014-07-06
  • 2023-03-15
  • 1970-01-01
  • 2013-11-27
  • 2014-12-21
  • 1970-01-01
  • 2019-10-07
  • 2019-05-27
  • 1970-01-01
相关资源
最近更新 更多