在使用Django Rest框架(DRF)编写基于类的视图(CBV)时,使用GenericAPIView还是基本ApView更好
在过去一年左右的时间里,我一直在使用django进行编码,我的大部分工作是编写API以连接到基于React的前端。在我的大多数教程中,我看到人们使用GenericAPIViews作为基础,但我没有发现API中复杂代码的实质内容。因此,为了及时交付代码,我选择了更简单的解决方案,即使用APIView,在这里我使用更少的抽象,对代码有更多的控制(通过编写更多的代码),并清楚地理解代码模块的功能 我担心的是,如果我选择了一条捷径,选择不学习如何使用GenericAPIViews,这样我就可以充分利用它的潜力。我在使用GenericAPIViews或DRF时遇到的一些问题在使用Django Rest框架(DRF)编写基于类的视图(CBV)时,使用GenericAPIView还是基本ApView更好,django,django-rest-framework,swagger-2.0,django-swagger,Django,Django Rest Framework,Swagger 2.0,Django Swagger,在过去一年左右的时间里,我一直在使用django进行编码,我的大部分工作是编写API以连接到基于React的前端。在我的大多数教程中,我看到人们使用GenericAPIViews作为基础,但我没有发现API中复杂代码的实质内容。因此,为了及时交付代码,我选择了更简单的解决方案,即使用APIView,在这里我使用更少的抽象,对代码有更多的控制(通过编写更多的代码),并清楚地理解代码模块的功能 我担心的是,如果我选择了一条捷径,选择不学习如何使用GenericAPIViews,这样我就可以充分利用它
- 自定义权限(例如,我想要一个经过身份验证且具有特定权限级别访问权限的用户(例如,can_do_xyz,或有权访问_abc)
- 使用可能需要经过复杂的业务/应用程序逻辑层的可写序列化程序
- 在同一个GenericAPIView类函数中为多个模型创建条目
- 我需要在api模式文档中手动指定查询/表单/路径字段(使用AutoSchema)
- 此外,如果一个API具有具有不同字段的get/post/put/delete方法,那么swagger中的每个API端点都将显示方法中使用的所有字段(这是可以理解的,因为我为类定义了模式,而不是为单独的函数定义了模式)。是否有办法解决此问题
- delete方法应该只需要survey_id作为参数,而POST/PUT方法需要body
对于管理rest文档,您可以使用允许为每个方法告诉序列化程序的API。我不建议使用GenericAPIView,因为假设您只有一个用于get方法的API,并且您使用的是GenericAPIView,那么它将不必显示很多方法(get/put/delete/post)然而,你只需要获得。因此,在这种情况下,我建议你根据需要使用UpdateAppiew、RetrieveAppView、ListapView、CreateApView中的任何人谢谢你让我知道drf yasg!我必须尝试一下。另外,如果你不介意的话,你有没有详细介绍如何在drf中使用mixin的教程/博客(或一般的python)?