2016-09-23 18 views
0

Pycharm暗示我讓我的CBV方法變成靜態的,我想「爲什麼不」。但是有一個原因,那就是沒有完成,否則很多比我更聰明的人肯定會想到以前這樣做。現在我試圖理解爲什麼它沒有完成。爲什麼不使用靜態方法進行CBV?

我再次閱讀文檔中的教程,而唯一使用self的地方是引用對象方法,它們本身可能是靜態的。所以我仍然沒有看到他們不應該全部變成靜態的任何理由。

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

我試圖讓他們在我的項目靜態的,它似乎沒有任何問題的工作。那麼,有人請向我解釋爲什麼這些方法不會像通常的做法那樣是靜態的? FBV是靜態的,所以CBV應該很好地使用靜態方法,對吧?

回答

0

它們不是靜態的,因爲它更容易處理視圖實例。通常當你編寫靜態方法時,你只是爲了方便使用而將類的實例綁定到類/實例上。這個函數不知道實例本身。這僅僅是出於命名空間的目的。

但是在CBV數據如request,object等存儲在self,以便它可以在任何實例方法中訪問,而無需鏈通過它們通過所有方法調用。不要忘記,有很多用於處理表單,上下文,模板等的底層方法。您可能需要共享「實例上下文」,以便他們按照自己的意願進行操作。

+0

如果我理解正確,這是句法糖,如果想要的話,它可以很好地靜止,對嗎?這是否也適用於Django Rest Framework視圖?我仍然在尋找有效的使用案例,我只能找到一個模糊的例子,看起來像他們使用實例變量爲了使用它們:https://docs.djangoproject.com/en/1.10/topics/class -based-views/intro /#handling-forms-with-class-based-views – dtgq

+0

@DavidTan你說什麼語法糖? –

相關問題