我創建django應用程序時總是使用FBV(基於功能的視圖),因爲它非常容易處理。但是大多數開發人員表示,使用CBV(基於類的視圖)更好,並且如果複雜的視圖會使用CBV,那麼使用FBV會更好。基於類的視圖和基於視圖的功能
爲什麼?使用CBV有什麼好處?
我創建django應用程序時總是使用FBV(基於功能的視圖),因爲它非常容易處理。但是大多數開發人員表示,使用CBV(基於類的視圖)更好,並且如果複雜的視圖會使用CBV,那麼使用FBV會更好。基於類的視圖和基於視圖的功能
爲什麼?使用CBV有什麼好處?
單一最顯着的優點是繼承。在一個大型項目中,您可能會有很多類似的觀點。您可以簡單地將視圖從基本視圖繼承,而不是一次又一次編寫相同的代碼。
此外,django附帶了一些通用視圖類的集合,可用於執行一些最常見的任務。例如,DetailView類用於傳遞一個模型中的單個對象,使用模板呈現它並返回http響應。你可以將它直接進入你的URL的conf ..
url(r'^author/(?P<pk>\d+)/$', DetailView.as_view(model=Author)),
或者你可以用自定義功能
class SpecialDetailView(DetailView):
model = Author
def get_context_data(self, *args, **kwargs):
context = super(SpecialDetailView, self).get_context_data(*args, **kwargs)
context['books'] = Book.objects.filter(popular=True)
return context
現在你的模板將通過本書的對象的集合呈現擴展它。
一個不錯的地方,從這開始有一個很好的閱讀docs。
更新
ccbv.co.uk具有全面的和易於使用的約你已經提供給您基於類視圖的信息。
在我的(有偏見的)意見,最好的地方開始在http://ccbv.co.uk/ :) – meshy 2013-02-14 09:24:47
感謝指針@ meshy。 – GreenAsJade 2014-11-19 06:55:41
@meshy cbv的域名,有人必須真的愛cbv! – NeoWang 2015-07-22 09:54:18
有些話從兩勺
提示替代Apporach - 住在一起FBVs
有的開發商寧願選擇使用最多的瀏覽和CBVS FBVs的方只爲需要的意見被分類。這個策略也很好。
當我開始使用DJango時,我從未使用過CBV,因爲它們的學習曲線和結構有點複雜。快進兩年,我只在少數地方使用FBV。我確信代碼將非常簡單並且保持簡單。與他們一起來到CBVS的
主要好處和多重的繼承是,我可以完全避免寫信號,輔助方法和複製粘貼代碼。特別是在應用程序比基本的CRUD操作更多的情況下。具有多重繼承的視圖多次更容易調試具有信號和輔助方法的代碼,特別是如果它是未知的代碼庫。
除了通過提供不同的方法來做調度,檢索模板,處理不同的請求類型,通過模板上下文變量,驗證表格,以及更多的開箱多的傳承CBVS。這些使代碼模塊化,因此可以維護。如果你想在你的Django應用程序中實現一個功能齊全的CRUD操作基於
類的觀點是優秀的,同樣需要一點時間&努力實現使用基於函數的觀點。
當您不打算在您的網站/應用程序上實施任何CRUD時,我會建議您使用基於功能的視圖意味着您的內容是簡單地呈現模板。
我創建了一個簡單的CRUD基於應用程序使用基於類的視圖是現場直播。訪問http://filtron.pythonanywhere.com/view/並享受。然後你會知道它的重要性。
「大多數開發者」?真?我相當懷疑這一點。就我個人而言,雖然我認識到CBV在某些情況下很好,但我幾乎從不使用它們。 – 2013-02-09 19:33:42
是的,這是我讀過的書中所陳述的,但我不知道這一點。我真的很喜歡使用FBV而不是CBV。 – catherine 2013-02-10 07:16:44
@DanielRoseman如果丹尼爾不使用cbv,我現在停止擔心不知道和不使用cbv .. – doniyor 2014-08-26 16:24:58