在 Django 的 FBV 和 CBV 之间做出决定
Deciding between Django's FBV and CBV
我正在尝试重构一些(4 个)ajax 视图,其工作方式与以下过程几乎相同:
- 使用 args
获取一些(2-4 个)对象
- Return a json 如果未找到任何对象,否则继续
- 然后我们提取另一个对象(使用在步骤 1 中找到的对象)来更新并创建一个如果没有找到
- 根据我们在步骤 3 中得到的对象的类型创建一个新表单并验证和更新对象
- 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.
中处理所有不同的请求方法
我正在尝试重构一些(4 个)ajax 视图,其工作方式与以下过程几乎相同:
- 使用 args 获取一些(2-4 个)对象
- Return a json 如果未找到任何对象,否则继续
- 然后我们提取另一个对象(使用在步骤 1 中找到的对象)来更新并创建一个如果没有找到
- 根据我们在步骤 3 中得到的对象的类型创建一个新表单并验证和更新对象
- 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.
中处理所有不同的请求方法