在 Django 的 FBV 和 CBV 之间做出决定

Deciding between Django's FBV and CBV

我正在尝试重构一些(4 个)ajax 视图,其工作方式与以下过程几乎相同:

  1. 使用 args
  2. 获取一些(2-4 个)对象
  3. Return a json 如果未找到任何对象,否则继续
  4. 然后我们提取另一个对象(使用在步骤 1 中找到的对象)来更新并创建一个如果没有找到
  5. 根据我们在步骤 3 中得到的对象的类型创建一个新表单并验证和更新对象
  6. Return最后一个json取决于表单有效性

前 2 个步骤在所有 4 个 ajax 视图中都是通用的。甚至他们尝试使用 args 从中提取对象的模型也很常见。

但是,从第 3 步开始,事情在本质上是截然不同的。用于提取对象的模型以及用于验证的表单。此外,根据模型的不同,在 ajax 视图中的 2 个视图中还会发生更多的事情。

我对基于 Class 的视图还很陌生,所以阅读了 this and this。然而,如果我将这 4 个 ajax-views 转换为 CBV,我无法确定我是否会在维护方面创造一个非常方便的未来。是的,我们有可能每年创建另一个这样的 ajax-视图。

问题是:我是否应该使用 CBV,因为如果我使用 CBV,我只能停止前 2 个步骤的复制?

我个人认为基于 class 的视图更易于阅读。使用继承来不重复相同代码的能力很好,即使你只使用它一点点。我发现当您开发 RESTful API 时,基于 class 的视图真的很出色,因为您可以在同一个 class.

中处理所有不同的请求方法