2011-03-20 49 views
0

我向我的兄弟展示了一個Django演示,他問我以下問題:「爲什麼Django靜態和媒體文件夾沒有預先配置?它的目的不是成爲配置框架的慣例嗎?爲什麼我應該在每次啓動Django項目時配置這些東西?「爲什麼Django靜態和媒體文件夾沒有預先配置?

我無法回答他。有人可以嗎? P:我並不想將Django與其他框架進行比較。我只是想了解爲什麼這些設計決定是做出來的;

回答

4

Django是非常明確的而不是約定over配置框架。你的兄弟也許正在考慮Rails,它遵循這個原則 - 但是Django遵循Python的原則:「顯式比隱式更好」。

+0

我同意你的觀點,但「顯式比隱式更好」並不是「手動顯式」的藉口;) – 2011-03-21 16:56:21

0

因爲django不應該分發媒體文件。當您閱讀文檔時,您可以看到靜態文件應該(並且必須)在服務器引擎和/或某種類型的CDN上進行分發。 Django只是在這裏處理你的頁面,而不是你的媒體。而當你在開發中時,的確,你必須使用django來分發靜態文件。但是你可以使用python腳本來生成它並進行管理。對我而言,最好的之一是:Django mediagenerator。這會讓你的文件像他們處於開發模式,但這將在生產中優化它。

+0

「當你在生產」 - 正因爲如此。我知道我不應該通過Django提供靜態文件,但是如果Django開發過程假定我將在開發階段使用開發服務器,那麼不應該假設我會在這個階段使用Django來提供靜態文件嗎? – 2011-03-20 15:26:03

+2

確實,你是對的。這應該在dev模式下默認實現。但另一方面,我不認爲Django是如此的「約定配置」,在Django中,我經常不得不編寫大量的配置文件。試試Rails,你會看到什麼約定意義的紅寶石編碼器。這可能是某種愚蠢的東西,但我認爲Django編碼人員更喜歡明確地聲明一切。沒有隱藏的行爲。 – 2011-03-20 15:32:23

+0

我知道Rails和一些PHP框架(如Cake,CI,Yii和Zend),這些配置會自動生成。除了我不喜歡它,你提出的想法是有道理的。 「顯式比隱式更好」 - Python的禪宗 – 2011-03-20 15:42:11