2011-04-27 50 views
0

我想知道django generic flatblocks app是否違反了關注點分離原則。
對於那些不瞭解應用程序的人來說,它會根據slug或id和模型類型來提取數據。
例如:正在使用模板標籤來拉取數據是否違反了關注點分離?

{% gblock "about" for "cms.FlatPageWithsummary" into "about" %} 

一方面,它標誌着該內容應該出現是很有意義但從設計的角度,但在另一方面,它不應該是模板的責任來獲取數據。
我該怎麼辦?我應該通過請求上下文嗎? 現在我面臨另一種情況,我需要拉我的最新帖子並顯示它們。
線路在哪裏?
因爲設計師只能使用我提供的模板標籤來標記和實現此功能,但另一方面,我從模板中提取數據似乎有點不妥。

回答

0

django.contrib.comments too fetches data from the DB in a templatetag。如果你想讓你的應用程序可重用,那麼這是一種常見的模式。

+0

使用新的基於類的視圖,可以很容易地提供一個將帖子添加到extra_context變量的mixin。你沒有回答我的問題。這是否違反SoC? – 2011-04-27 06:34:58

+0

我不這麼認爲。這是一種簡單的方法 – vad 2011-04-27 07:18:25

+0

即使它使事情簡單化,它是否違反SoC也不是一個有效的論點。 – 2011-04-27 08:02:18

2

如果是?這些「原則」可以讓我們的開發人員和用戶的生活變得更加輕鬆。如果最簡單和最乾淨的方法違反了這個原則,只要代碼的質量不受影響,我們應該隨時這樣做。不以任何代價觀察分離問題並不是道德理由。

而且,別忘了,還有其他原則可以遵循。爲了爭辯,這確實打破了問題的分離,它仍然絕對遵循DRY。如果這些原則有衝突,您應該選擇遵循哪一項。

+0

如果我不使用模板標籤,還有其他方法可以解決DRY問題。問題是,誰來負責獲取數據?視圖或模板的? – 2011-04-27 08:52:47

相關問題