Pycharm建议我让我的CBV方法保持静态,我想"为什么不"。但事实并非如此,否则很多比我自己更聪明的人必须考虑过这样做。现在,我试图理解为什么它没有完成。
我再次阅读了文档中的教程,并且唯一使用self
的地方是引用对象方法,它们本身可以是静态的。所以我仍然没有看到他们不应该全部变得静止的任何理由。
http://www.django-rest-framework.org/tutorial/3-class-based-views/
我尝试在项目中将它们设置为静态,它似乎没有任何问题。那么有人请向我解释为什么这些方法不是静态的常见做法? FBV是静态的,所以CBV也应该使用静态方法,对吧?
答案 0 :(得分:0)
它们不是静态的,因为它更容易使用视图实例。通常在编写staticmethod时,您只是将函数绑定到类/实例以便于使用。该函数不了解实例本身。它仅用于命名空间。
但是在像request
这样的CBV数据中,object
等存储在self
上,因此可以在任何实例方法中访问它,而不会通过所有方法调用传递它们。不要忘记,有许多底层方法可以处理表单,上下文,模板等。您可能需要共享“实例上下文”,以便他们做您想做的事。