python - 通用视图 vs APIView vs Viewsets, vs ModelViewsets
问题描述
我刚开始学习 Django Rest Framework,现在我了解了 APIView、Viewsets、Modelviewsets、GenericView 4 个概念。它们之间有什么区别,哪一个在开发 REST API 时使用效率更高,为什么?
解决方案
没有标准,但您可以从这个简单的策略开始:
一类中的几个动作和基本的 CRUD --->视图集(
ModelViewSet
并且ReadOnlyModelViewSet
最有用)对模型类的特定操作 --->通用视图(
RetrieveModelMixin
,ListAPIView
,UpdateModelMixin
,DestroyModelMixin
,CreateModelMixin
)如果您想自己编写所有
create
,update
, ... 方法,您可以在您的, , , ... 方法中使用APIView
和编写它们( &之间的区别只是您不能在类中使用某些内置方法,例如, , ... )get
post
put
APIView
GenericAPIView
queryset
serializer_class
如果您想从头开始编写所有内容,您可以在其中编写您的 api
function base
- 大多数情况下,您必须使用通用视图编写 api,如果您学习了所有通用 APIView 最佳实践,它具有强大的功能,您将变得如此干净、可读和可扩展
- 如果您有可以使用 Viewset 的简单模型,请购买
我在普通 API 中使用 GenericAPIView 并在自定义 API 中使用 APIView(就像管理面板中的大多数 API)
推荐阅读
- sql - 如何消除 SQL 查询中返回的用户定义的重复行?
- apple-push-notifications - AWS SNS 支持基于令牌的 APNs 连接
- go - 在 Go 版本 1.13 上为 aws-sdk-go 构建依赖项失败
- r - 从 MULTIPOLYGON 中提取最小和最大坐标到单独的列中
- node.js - Node.js net.Socket TCP 连接随机占用 > 4K ms
- docker - 在dask中,运行本身运行docker容器的任务的最简单方法是什么?
- python - 使用 PyCharm 在 docker 容器中运行 Python 代码
- bash - Bash:远程 SSH ncat 命令需要 sigint 才能退出
- linux - 用于用户自定义 http iFrame 的 Apache 反向代理
- python - 在 Keras 中保存模型检查点与保存整个模型