Python IDE建议用@staticmethod修饰Django CBV方法
这个建议似乎有道理,因为方法中没有使用Python IDE建议用@staticmethod修饰Django CBV方法,python,django,static-methods,django-class-based-views,Python,Django,Static Methods,Django Class Based Views,这个建议似乎有道理,因为方法中没有使用self,但现在我很好奇: 这是CBV的疏忽吗?用户应该手动装饰每个@staticmethod Django中已经有一些代码自动使所有CBV方法保持静态了吗 这是我所说内容的截图。它使用的是DRF的CBV,但这和我使用香草Django CBV时的建议是一样的 不,你不应该这样做。这些都是实例方法,需要保持这种状态 尽管您没有使用任何实例值或调用任何实例方法,但这似乎有点奇怪。通常,您会通过self.kwargs引用URL参数,并调用其他方法,如self.
self
,但现在我很好奇:
- 这是CBV的疏忽吗?用户应该手动装饰每个
@staticmethod
- Django中已经有一些代码自动使所有CBV方法保持静态了吗
不,你不应该这样做。这些都是实例方法,需要保持这种状态 尽管您没有使用任何实例值或调用任何实例方法,但这似乎有点奇怪。通常,您会通过
self.kwargs
引用URL参数,并调用其他方法,如self.get\u context\u data
。如果你不这样做,我想知道你是否真的从使用CBV中获益
(事实上,我通常的建议是,根本不要覆盖
get
或post
;这些方法通常会委托给更具体的方法,更易于覆盖。)我不太确定正确实现的cbv应该是什么样子,而且我甚至不认为使用cbv有任何好处。在找到使用cbv的理由之前,我应该只使用函数视图吗?