python - Django REST 框架 : Generics or ModelViewSets?

标签 python django rest django-rest-framework

我为我的 REST API 使用泛型和普通 url,但现在我遇到了问题:我想要自定义操作、简单 View 来为我的模型做一些事情,比如“运行”、“发布”等。

ViewSet 提供了 action 装饰器来创建自定义操作,但仅在 ViewSets 中,还有逐步路由器,这使我们能够使用 railsish convention-over 简化一切-配置。

但我发现 ModelViewSet 为我们提供了与泛型相同的能力:完整的 CRUD、序列化器、过滤器、自定义前置/后置和查询集,因此,这会引发问题:

如果 ModelViewSet 提供相同甚至更多的能力,为什么会有泛型?有什么区别?

最佳答案

区别在于它们提供的方法。

例如:

GenericViewSet 继承自 GenericAPIView 但不提供任何基本操作的实现。只是get_object,get_queryset。

ModelViewSet 继承自 GenericAPIView 并包含各种操作的实现。换句话说,您不需要实现基本操作,如列出、检索、创建、更新或销毁。当然,您可以覆盖它们并实现您自己的列表或您自己的创建方法。

您可以在 API 引用部分阅读更多相关信息: ModelViewSet

关于python - Django REST 框架 : Generics or ModelViewSets?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25125959/

相关文章:

Django UNIQUE 约束失败 : core_organization. 名称

php - RESTful Zend 框架 API

python - 使用 WSGI、多个服务器部署 Web.py 应用程序

python - 使用图形 API 编写代码

python - 更改模型管理表单默认值

python - Wagatail 嵌入 YouTube - 阻止相关视频显示

mysql - 在环回中更新模型的 id 值

javascript - 不允许在本地 Nodejs 服务器中进行跨域请求

python - 如何绘制不同长度的数组

python - Factory_boy 不创建不同的用户对象 Django