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

时间:2016-07-06 14:16:54

标签: django django-views django-class-based-views

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

  1. 使用args
  2. 获取一些(2-4个)对象
  3. 如果找不到任何对象,则返回json,否则继续
  4. 然后我们提取另一个对象(使用步骤1中找到的对象)来更新并创建一个(如果找不到的话)
  5. 根据我们在步骤3中获得的对象类型创建新表单并验证和更新对象
  6. 根据表单有效性最终返回一个json
  7. 前两个步骤在所有4个ajax视图中都很常见。甚至他们尝试使用args提取对象的模型也很常见。

    然而,第3步之后的事情本质上是非常独特的。用于提取对象的模型,反过来用于验证的形式。同样取决于模型,在其中2个ajax-views中发生了更多的事情。

    我对基于类的视图不熟悉并阅读thisthis。然而,如果我将这4个ajax视图转换为CBV,我无法确定我是否会在维护方面做出非常方便的未来。是的,我们有可能每年创建一次这样的ajax-view。

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

1 个答案:

答案 0 :(得分:2)

我个人认为基于类的视图更容易阅读。能够使用继承不重复相同的代码是很好的,即使你只是一点点使用它。我发现在开发RESTful API时,基于类的视图确实很有用,因为您可以在同一个类中处理所有不同的请求方法。