2012-07-20 46 views
8

我是Django和Python的新手,在閱讀了很多內容之後,我決定不使用全局函數作爲視圖(也許因爲我不習慣全局函數,但主要是因爲我想要更好的重用級別,並且希望有更小的代碼塊) 。問題是我一直在檢查的大多數Django應用程序都沒有使用基於類的方法。基於類的視圖被Django社區廣泛使用嗎?

這是因爲我在錯誤的地方檢查代碼(我從Django教程開始,然後在github上)?

我在問這個,因爲將來我希望能和更多的Django程序員一起工作,並且不想在開始時採用非標準方法。

+0

瞭解這兩個,因爲你會看到兩者。儘可能地使用CBV,以及何時使用CBV(如果您爲編寫CBV而編寫100多行代碼,可能意味着使用基於函數的視圖會更高效)。當CBV工作時,他們工作得很好,並且遠遠優越,但是對所有事物都有限制,有時候使用函數更有意義。 – 2012-07-20 14:52:23

+0

@ChrisPratt謝謝,我正在考慮使用這兩種策略。你提到編寫100多行代碼來完成CBV的工作,我同意,但我想在視圖函數中編寫100多行代碼呢?我沒有使用Django的經驗,但與其他框架相比,模板引擎似乎不是很強大,所以我想我將不得不在控制器中編寫更多代碼。 – Demian 2012-07-20 19:01:56

+1

這不是一個硬性和快速的數字;我只是想暗示,如果你編寫了很多代碼讓CBV以你需要的方式工作,那麼你應該考慮一下使用基於函數的視圖是否更高效。模板引擎不通電,故意如此。 Django哲學認爲混合HTML和代碼是不好的,應儘可能地避免人爲和理性的可能性。因此,您的視圖應該設置模板所需的所有內容,然後理想地將模板轉儲到屏幕上。 – 2012-07-20 20:14:20

回答

10

一個事實是,基於類的視圖被添加到Django 1.3,所以如果你打算支持舊的Django版本比你將不得不堅持功能視圖,例如,如果你想創建一個通用的應用程序並啓動它在GitHub或其他人使用。

至於什麼時候使用基於功能視圖的基於類的視圖,我認爲這將取決於你的用例,我的建議是,你必須瞭解每種方式的advantage,恕我直言,這是非常正常的,單個項目。

Nick Coghlan回覆於另一篇偉大的文章CBV were a mistake有這個不錯的article它值得檢查。

希望這有幫助:)

+0

謝謝!這真的很有幫助,我很喜歡這些文章(我認爲Luke Plant有一些非常好的點,但是由於他分析了一套不完整的場景,他得出的結論不正確)。你認爲如果我在項目中使用這兩種樣式會對其他程序員使用我的代碼有問題,或者這是一種常見的情況?再次感謝! – Demian 2012-07-20 18:44:27

+0

@Demian:非常歡迎您,至於您的問題,我認爲如果有人想要使用Django(> = 1.3),他應該學習兩種風格(所以應該是您的隊友),如果您使用兩種風格CBV vs FBV)(恕我直言,這是一種很好的做法),我認爲可能有問題的是解釋爲什麼你選擇使用X而不是Y,所以你應該有一個很好的理由給他們:)通過理解每一個的優勢在另一個上。 – mouad 2012-07-20 23:32:00

+0

很好地說,上面提到的文章已經更新,作者不相信CBV總是不好。事實上,他肯定有CVB閃耀的案例。 :) – MatheusJardimB 2016-09-27 12:04:23