为什么不为CBV使用静态方法?

时间:2016-09-23 02:38:32

标签: django oop django-rest-framework

Pycharm建议我让我的CBV方法保持静态,我想"为什么不"。但事实并非如此,否则很多比我自己更聪明的人必须考虑过这样做。现在,我试图理解为什么它没有完成。

我再次阅读了文档中的教程,并且唯一使用self的地方是引用对象方法,它们本身可以是静态的。所以我仍然没有看到他们不应该全部变得静止的任何理由。

http://www.django-rest-framework.org/tutorial/3-class-based-views/

我尝试在项目中将它们设置为静态,它似乎没有任何问题。那么有人请向我解释为什么这些方法不是静态的常见做法? FBV是静态的,所以CBV也应该使用静态方法,对吧?

1 个答案:

答案 0 :(得分:0)

它们不是静态的,因为它更容易使用视图实例。通常在编写staticmethod时,您只是将函数绑定到类/实例以便于使用。该函数不了解实例本身。它仅用于命名空间。

但是在像request这样的CBV数据中,object等存储在self上,因此可以在任何实例方法中访问它,而不会通过所有方法调用传递它们。不要忘记,有许多底层方法可以处理表单,上下文,模板等。您可能需要共享“实例上下文”,以便他们做您想做的事。